Я беру информацию $ _POST и сохраняю ее в БД, а затем запрашиваю и распечатываю эту информацию пользователю. Должен ли я использовать htmlspecialchars () перед вставкой этой информации или после того, как я запрошу ее перед выводом?

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

Мой сайт поддерживает Bbcode, и я хочу, чтобы пользователи могли использовать повседневные символы без необходимости видеть "amp; lt; &".

Терпение со мной <--- noob приветствуется! Спасибо

4
KRB 30 Авг 2011 в 19:11

2 ответа

Лучший ответ

Должен ли я использовать htmlspecialchars () перед вставкой этой информации или после того, как я запрошу ее перед выводом?

Экранируйте данные для целевого кода непосредственно перед его вставкой. т.е. непосредственно перед его выводом.

Это означает, что вы сохраните данные в исходной форме для других целей (например, для вывода пользователю для редактирования, в том числе по электронной почте, создания PDF-файла, поиска и т. Д.)

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

htmlspecialchars() преобразует кавычки во введенных данных в HTML. Так что ничего особенного делать не надо.

Мой сайт позволяет использовать Bbcode

Тогда вам понадобится подходящий парсер BBCode.

7
Quentin 30 Авг 2011 в 15:15

htmlspecialchars() используется перед выводом, чтобы избежать XSS. И база данных должна лучше сохранять необработанный ввод пользователя.

2
xdazz 30 Авг 2011 в 15:16