Запретить пользователям вводить код PHP в textarea? - PullRequest
0 голосов
/ 09 июня 2011

У меня есть страница PHP с текстовыми областями, которые пользователи могут изменять, и их значения сохраняются и отображаются на другой странице PHP - я боюсь, что это может быть уязвимо для атак XSS (или того, что злоумышленники используют сегодня) ... Я вижу, http://htmlpurifier.org - хорошее решение, позволяющее избежать XSS-атак, и я прочитал в SO-потоке, что PHP-код, введенный в область textarea, игнорируется браузерами и не выполняется на стороне сервера. Я просто хочу знать, будет ли htmlpurifier полностью защищать мой сайт и есть ли шанс, что старые браузеры, такие как IE6, не настолько умны, чтобы игнорировать подобный код PHP. Я впервые делаю сложный сайт, так что я делаю чаевые по теме безопасности ... Спасибо:)

В дополнение к этому, я использовал stripslashes и nl2br, чтобы избежать проблем форматирования с апострофами и переносами строк, но есть ли что-то еще, что я должен использовать, чтобы избежать неожиданных проблем с отображением?

Ответы [ 3 ]

7 голосов
/ 09 июня 2011

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

Сам код PHP будет игнорироваться браузером. Браузер подумает, что это какой-то большой странный элемент <?php ... '?>.

1 голос
/ 10 июня 2011

Чтобы конкретно ответить на ваши вопросы ...

Нет, вам не нужно беспокоиться о том, что браузер выполняет PHP-код, введенный пользователем.Обычно это то, о чем вам следует беспокоиться, когда вы «включаете» в скрипты php, и даже тогда, если вы правильно их структурируете, вам не о чем беспокоиться.Это потому, что PHP интерпретируется на стороне сервера (на вашем веб-сервере), а не на стороне клиента (в браузере).Кроме того, этот тип атаки будет больше соответствовать RFI или внедрению кода (если вы хотите использовать некоторые термины в Google), а не XSS.

Stripslashes может быть полезен для определенных вещей (потенциально в отношениик атакам SQL и т. д.), но не является основной защитой для атак XSS.

Когда HTMLPurifier запущен сам по себе, вы будете противостоять атакам XSS (при условии, что вы правильно настроили его и т. Д.)пытаясь занести в черный список «плохие» символы / ввод.Какой тип данных вы хотите, чтобы пользователи могли вводить?Просто обычный текст?BBCode + текст?Html?

0 голосов
/ 09 июня 2011

PHP-код - это код сервера.Браузеры не включают интерпретатор PHP, поэтому они не будут его выполнять.

...