Каков наилучший способ «очистить» информацию, которая будет храниться в базе данных SQL? - PullRequest
2 голосов
/ 05 августа 2009

Сценарий:

У меня есть блог, в который я хочу сделать сообщение. У меня есть настроенная форма, в которой я могу написать сообщение в блоге и отправить его на отдельную страницу php, которая затем сохраняет его в базе данных (после того, как он подтвердит, что я отправляю сообщения), где оно будет прочитано и отображено на домашней странице. , Как я могу легко избежать любых кавычек или чего-либо, что будет мешать его хранению в базе данных, но при этом позволит отображать его должным образом (со всем форматированием без изменений)?

Спасибо

Ответы [ 3 ]

4 голосов
/ 05 августа 2009

Подготовленные операторы в PHP хорошо позаботятся о дезинфекции данных, поступающих в базу данных.

4 голосов
/ 05 августа 2009

Единственные вещи, которые будут мешать его хранению в базе данных MySQL, можно легко избежать с помощью mysql_real_escape_string () .

Когда вы извлекаете его из базы данных, все будет выглядеть так же, как и до того, как он был экранирован и вставлен. Перед тем, как отобразить его на веб-странице, вам нужно запустить htmlspecialchars () на тексте, чтобы предотвратить действие вредоносных скриптов.

Необязательной командой будет strip_tags () , если вы не хотите, чтобы текст вообще содержал HTML.

1 голос
/ 05 августа 2009

Подготовленные высказывания - это всегда хорошая идея. Но вы можете рассмотреть возможность перемещения кода вашей базы данных в хранимую процедуру. Это повысит безопасность и производительность (в большинстве случаев, в зависимости от того, какую базу данных вы используете и как вы кешируете результаты).

Если вы не собираетесь использовать маршрут хранимых процедур, также обязательно отключите несколько строк команд для каждого вызова базы данных. Это должно быть в файлах конфигурации базы данных. Это отключит возможность сделать это:

ваша команда; вредоносная команда

Хотя есть и другие способы, это, безусловно, самый безопасный.

...