Sql Injection возможен, если параметры передаются через GET. Но возможно ли это также через POST. Если да, может ли https предотвратить это?
Да, это возможно с $_POST
а также с $_GET
, $_COOKIE
и $_REQUEST
. HTTPS не будет защищать вас вообще. Вы должны использовать некоторые функции для защиты вас, например mysql_real_escape_string или использовать подготовленные операторы .
Все сообщения из веб-браузера должны обрабатываться как «ненадежные» . Другие методы, которым вы не можете доверять, – это Ajax
, file uploads
и JavaScript form validations
(среди прочего). Все эти данные поступают непосредственно из веб-браузера и не должны быть доверены, прежде чем вы отфильтровываете их или проверяете данные.
Единственное, что вы можете доверять, это $_SESSION
, при условии, что вы ТОЛЬКО включаете проверенные данные в переменные $_SESSION
.
Вы должны избегать всех представленных пользователем данных независимо от метода.
Нет, между этими двумя методами нет разницы.
SQL-инъекция происходит, когда вы используете введенный пользователем ввод в SQL-операторах без его очистки. Не имеет значения, получили ли вы данные через GET или POST, или если они были зашифрованы. Важно то, что вы делаете с помощью ввода после его появления.
Ничто не может защитить вас, кроме как санировать ваши входы, и единственный полностью безопасный способ сделать это – использовать подготовленные заявления. Это, конечно, хлопот, но альтернативы не существует – если вы разрабатываете веб-сайт и взломали SQL-инъекцию, потому что вы не использовали подготовленные заявления, вы в значительной степени небрежны, как программист для этого.
Самый простой способ, который я нашел в PHP, сделать это на сегодняшний день, – использовать оболочку mysqli Codesense . Это аккуратный, маленький, класс, который удаляет большую часть проблем, связанных с необработанными подготовленными операциями, был более чем достаточно прочным, где я его использовал.
Использование этого подготовленного SQL лишь немного сложнее, чем прямой SQL, поэтому на самом деле нет оправдания.
https не может защитить вас здесь. Отфильтруйте ввод (ы)