Каков наилучший способ очистки общественного мнения? - PullRequest
3 голосов
/ 10 сентября 2009

Итак, у меня есть форма, которая принимает данные от пользователя, которые могут быть позже представлены на странице.

Я думаю об этом с точки зрения безопасности: взять входные данные, применить функцию mysql_real_escape_string () ко всем входным данным, а затем вставить с использованием подготовленного оператора.

При извлечении данных я использую htmlspecialchars () перед тем, как представить их на экране.

Это будет хорошо? Я пропускаю что-то важное?

Ответы [ 2 ]

4 голосов
/ 10 сентября 2009

Две вещи:

  • вы должны экранировать все данные перед отправкой в ​​базу данных; для этого :
    • mysql_real_escape_string - правильный инструмент, если вы не используете подготовленные заявления
    • если вы используете готовые заявления, вам не нужно убегать самостоятельно: это будет сделано автоматически.
    • Вы не должны делать и то и другое: как пояснил @longneck в своем комментарии, если вы избегаете себя и используете подготовленные операторы, которые тоже избегают, ваша строка будет экранирована дважды - и вы этого не хотите.
  • Тогда вы должны экранировать все выходные данные; если ваш выходной формат HTML, htmlspecialchars или htmlentities в порядке.

Итак, то, что вы делаете, мне кажется нормальным для вывода в HTML; но вы делаете больше, чем необходимо для вывода в БД.


Как примечание: если вы хотите разрешить своим пользователям использовать HTML, вы можете использовать такой инструмент, как HTMLPurifier - он позволяет вам указать, какие теги / атрибуты разрешены или нет.

1 голос
/ 10 сентября 2009

Методы, которые вы указали, верны и поэтому должны использоваться. И да, ваш отсутствующий XSS Filtering. Проверьте этот сайт на примеры атак XSS:

http://ha.ckers.org/xss.html

Итак, вам лучше получить систему предотвращения таких хаков, как строку регулярных выражений. Вот несколько уроков:

http://www.chipmunkninja.com/Helping-Prevent-XSS-Attacks-in-2@ http://shiflett.org/blog/2007/mar/allowing-html-and-preventing-xss

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