В другом вопросе есть комментарий, в котором говорится следующее: «Когда дело доходит до запросов к базе данных, всегда старайтесь использовать подготовленные параметризованные запросы. Библиотеки mysqli и PDO поддерживают это. Это бесконечно безопаснее, чем использование функций escaping, таких как mysql_real_escape_string». Источник Итак, я хочу спросить: почему подготовленные параметризованные запросы более безопасны?
Я просмотрел свой сценарий входа в систему, используя SQL Inject Me Firefox addon Согласно результатам тестирования, мой скрипт был уязвим для SQL Injection. Результат по примеру Results: Server Status Code: 302 Found Tested value: 1' OR '1'='1 Server Status Code: 302 Found Tested value: 1' OR '1'='1 Server Status Code: 302 Found Tested value: 1 UNI/**/ON SELECT ALL FROM […]
На http://www.justinshattuck.com/2007/01/18/mysql-injection-cheat-sheet/?akst_action=share – это раздел, в котором утверждается, что вы можете обойти mysql_real_escape_string с некоторыми азиатскими кодировками символов Обход mysql_real_escape_string () с BIG5 или GBK "инъекционная строка" に 関 す る 追加 情報: вышеупомянутые символы – китайский Big5 Это правда? И если да, как бы вы защитили свой сайт от этого, если у вас не […]
В настоящее время я использую расширение mysqli php. Традиционно я использовал mysqli_real_escape_string, чтобы избежать ввода пользователем. Однако я рассматриваю возможность изменения кода (надеюсь, как можно меньше шагов) для использования подготовленных операторов. Я хочу быть ясным на этом – если я использую подготовленные инструкции для привязки всех моих переменных, могу ли я быть уверенным, что SQL-инъекция […]
Начал работу с подготовленными инструкциями PDO не так давно, и, насколько я понимаю, он делает все возможное для вас. например, если $ _POST ['title'] является полем формы. $title = $_POST['title']; $query = "insert into blog(userID, title) values (?, ?)" $st = $sql->prepare($query); $st->bindParam(1, $_SESSION['user']['userID'], PDO::PARAM_INT); $st->bindParam(2, $title); $st->execute(); Это действительно безопасно? Нужно ли мне что-то […]
На самом деле я сделал google и получил так много результатов, но я не могу понять, потому что я новичок в этой области. Итак, что является простым способом, что PDO, почему я должен использовать это, что такое SQL-инъекция и т. Д. С примером? 1 На самом деле теперь мой код такой. config.php <?php $mysql_hostname = […]
Я видел, что несколько человек здесь mysql_real_escape_string что объединение запросов с использованием mysql_real_escape_string не защитит вас (полностью) от атак SQL-инъекций. Тем не менее, я еще не видел пример ввода, который иллюстрирует атаку, с которой mysql_real_escape_string не защитит вас. Большинство примеров забывают, что mysql_query ограничивается одним запросом и неправильно использует mysql_real_escape_string . Единственный пример, о котором […]
Поэтому я немного опытный разработчик php и с тех пор «делал эту чертову»; Тем не менее, я все еще отношусь к n00bish, когда речь заходит о защите моих приложений. В том, что я действительно не знаю всего, что знаю, могу и должен. Я взял Securing PHP Web Applications и читаю свой путь через это, проверяя […]
У меня было это обсуждение с высокопоставленным парнем PHP : PDO здесь бесполезен. а также mysql_real_escape_string. крайне низкое качество. Это, конечно, классно, но я честно не знаю, что не так с предложением использовать mysql_real_escape_string или PDO для исправления этого кода: <script type="text/javascript"> var layer; window.location.href = "example3.php?layer="+ layer; <?php //Make a MySQL connection $query = […]
Зачем нужны функции, специфичные для БД, такие как mysql_real_escape_string ()? Что это может сделать, что addlashes () не делает? Игнорируя на данный момент превосходную альтернативу параметризованных запросов, является webapp, который использует addlashes (), исключительно все еще уязвимый для SQL-инъекции, и если да, то как?