Истинные эксперты в области безопасности PHP, это PDO, или мне было бы хорошо с классом Active Record Codeigniter? Я прочитал http://codeigniter.com/forums/viewthread/179618/ и не уверен на 100%. Обычно я склоняюсь к таким экспертам, как Крис Шифлетт и OWASP для советов по безопасности. http://shiflett.org/blog/2006/jul/the-owasp-php-top-5 Использовал собственный класс PDO DBO вместо файлов базы данных Codeigniter. Каждый раз, когда […]
Если пользовательский ввод вставлен без изменений в SQL-запрос, тогда приложение становится уязвимым для SQL-инъекции , как в следующем примере: $unsafe_variable = $_POST['user_input']; mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')"); Это потому, что пользователь может ввести что-то вроде value'); DROP TABLE table;– value'); DROP TABLE table;– , и запрос будет выглядеть следующим образом: INSERT INTO `table` (`column`) […]
Мне просто интересно было ли, что я мог бы использовать некоторые формы подготовленных операторов в MySQL, поэтому мне не пришлось бы скрывать все мои входы, и мне не пришлось бы переключать все мои файлы с MySQL на MySQLi. Я действительно не доверяю функциям экранирования, поэтому, если есть какие-то альтернативы, которые работают в обычном MySQL, было […]
Я пытаюсь защитить себя от SQL-инъекции и использую: mysql_real_escape_string($string); При публикации HTML это выглядит примерно так: <span class="\"className\""> <p class="\"pClass\"" id="\"pId\""></p> </span> Я не уверен, сколько еще добавлений, добавленных real_escape_string, поэтому не хотят просто заменять несколько и пропустить других … Как мне «декодировать» это обратно в правильно отформатированный HTML-код с чем-то вроде: html_entity_decode(stripslashes($string));
Есть ли возможность SQL-инъекции даже при использовании функции mysql_real_escape_string() ? Рассмотрим эту ситуацию с образцом. SQL построен на PHP следующим образом: $login = mysql_real_escape_string(GetFromPost('login')); $password = mysql_real_escape_string(GetFromPost('password')); $sql = "SELECT * FROM table WHERE login='$login' AND password='$password'"; Я слышал, что многие люди говорят мне, что такой код по-прежнему опасен и может быть mysql_real_escape_string() даже при […]
Я mysql_* свой код от использования mysql_* до PDO . В моем коде у меня был mysql_real_escape_string() . Что эквивалентно этому в PDO?
Я прочитал это раньше «вход фильтра, выход выхода», но является ли фильтрация ввода действительно необходимым, когда я использую PDO с PHP? Я думал, что с PDO мне не нужно фильтровать входные данные, потому что подготовленный оператор заботится о SQL-инъекциях. Я думаю, что «выход выхода» по-прежнему действителен, но «вход фильтра» по-прежнему действителен?
Ранее сегодня был задан вопрос относительно стратегий проверки ввода в веб-приложениях . Главный ответ, на момент написания, предлагает в PHP просто использовать htmlspecialchars и mysql_real_escape_string . Мой вопрос: это всегда достаточно? Больше мы должны знать? Где эти функции ломаются?
Вопрос : предотвращает ли XSS (межсайтовый скриптинг) простое использование strip_tags для любых сохраненных полей ввода и запускает htmlspecialchars для любого отображаемого вывода … и предотвращает SQL Injection с помощью подготовленных инструкций PHP PDO? Вот пример: // INPUT: Input a persons favorite color and save to database // this should prevent SQL injection ( by using […]
Я изучаю SQL-инъекцию и пробовал в своем PHP-коде этот запрос: $condition = str_replace(["'","\\"],["\\'","\\\\"], @$_GET['q']); $query = "SELECT * FROM dummy_table WHERE dummy_column = '$condition'"; DB и таблица charset установлены в UTF8. Я не могу ничего вводить, может кто-нибудь мне помочь? EDIT: Как указывал GarethD, это сработало бы первым 'и чем \, разрешив инъекцию, как насчет […]