Базовая фильтрация MySQL / PHP - PullRequest
0 голосов
/ 06 января 2010

Я знаю, что это очень простой вопрос, поэтому я просто хочу получить простой ответ, пожалуйста, есть несколько способов сделать мой ввод безопасным для mysql.

Использует ли это ЛУЧШИЙ метод

mysql_real_escape_string()

На всех отправленных пользователем элементах, идущих в запросе mysql?

Если я использую вышеупомянутое, нужно ли мне использовать другую функцию в тот день, когда я получу ее обратно из mysql для показа на странице PHP?

Ответы [ 3 ]

4 голосов
/ 06 января 2010

PHP имеет очень хорошую функцию фильтра

http://php.net/manual/de/ref.filter.php

/*** use a callback filter to mysql_real_escape_string ***/
$answer = filter_input(INPUT_POST, "answer", FILTER_CALLBACK, array("options"=>"mysql_real_escape_string"));

/*** create an sql query ***/
$sql = "INSERT INTO quiz (answers) VALUES ('{$answer}')";

/*** echo the query ***/
echo $sql;
4 голосов
/ 06 января 2010

Использование подготовленных операторов - лучший способ поместить данные в MySQL. Подготовленные операторы явно указывают MySQL, что такое SQL и что такое данные, поэтому MySQL не будет выполнять SQL в данных.

Вы можете начать работу с подготовленными утверждениями с помощью Mysqli .

Что касается отображения данных на ваших страницах PHP, вы можете использовать htmlspecialchars () для экранирования вашего вывода.

2 голосов
/ 06 января 2010

escape-вход, фильтр-выход.

  • Вы должны использовать mysql_real_escape_string() или подготовленные операторы , входящие в БД.
  • Вы должны использовать htmlentities() для любых данных, сгенерированных конечным пользователем при отображении на странице.

Обратите внимание, что htmlentities не будет обрабатывать все возможные межсайтовые скриптовые атаки в зависимости от браузера пользователя иконкретный вектор атаки они использовали.Многие люди используют библиотеку очистки, такую ​​как HTML Purifier , чтобы очистить свои данные перед отображением на странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...