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 не может защитить вас здесь. Отфильтруйте ввод (ы)