У меня есть страница PHP с текстовыми полями, которые пользователи могут изменять, а их значения сохраняются и отображаются на другой странице PHP - я боюсь, что это может быть уязвимо для атак XSS (или того, что злоумышленники используют сегодня) ... I см. http://htmlpurifier.org - это хорошее решение, чтобы избежать атак XSS, и я прочитал в потоке SO, что PHP-код, введенный в текстовое поле, игнорируется браузерами и не выполняется на стороне сервера. Я просто хочу знать, будет ли htmlpurifier полностью защищать мой сайт и если есть вероятность, что старые браузеры, такие как IE6, недостаточно умны, чтобы игнорировать такой PHP-код. Это мой первый опыт создания сложного сайта, поэтому я обсуждаю тему безопасности ... Спасибо :)Запретить пользователям вводить PHP-код в textarea?
На боковой ноте я использовал stripslashes и nl2br, чтобы избежать проблем с форматированием с апострофами и строкой перерывы, но есть ли что-нибудь еще, что я должен использовать, чтобы избежать неожиданных проблем с отображением?
Технически, '' Отмечает [обработку] (http://www.w3.org/TR/html4/appendix/notes.html#hB.3.6) [инструкция] (http: //www.w3 .org/TR/xml/# sec-pi), а не элемент. Но это просто бессмысленный nit picking pedantry :) –
Спасибо, я это проверю :) Мне просто интересно, почему сервер не выполнит то, что внутри написанных пользователем '' тегов, - он вытягивает текст из запись базы данных и повторение ее в '
@tylerl PHP-код в строке не выполняется. Для PHP строка - это всего лишь строка байтов. – alex
Код PHP - это код сервера. Браузеры не включают интерпретатор PHP, поэтому они не будут выполнять его.
источник
2011-06-09 03:20:33 Sysyphus
Ну, идея заключалась в том, что в PHP-документе будут теги , и вы думаете, что сервер выполнит все, что находится внутри тегов. Почему-то это не так? – tylerl
Чтобы ответить на ваши конкретные вопросы ...
Нет, вам не придется беспокоиться о браузере выполнения PHP кода, который пользователь введенному. Это, как правило, только то, о чем вам нужно беспокоиться, когда вы «включаете» внутри php-скриптов, и даже тогда, пока вы их правильно структурируете, вам не о чем беспокоиться. Это связано с тем, что PHP интерпретируется на стороне сервера (на вашем веб-сервере), а не на стороне клиента (в браузере). Кроме того, этот тип атаки будет более соответствовать требованиям RFI или Code Injection (если вы хотите использовать некоторые термины для google), а не XSS.
Stripslashes могут быть полезны для определенных вещей (потенциально применительно к атакам SQL и т. Д.), Но не являются основной защитой для атак XSS.
С HTMLPurifier работает сам по себе, вы будете отлично от XSS атак (при условии, настроить его правильно, и т.д.)
Тем не менее, это всегда лучше, чтобы фильтровать пользовательский ввод против белого списка, а не пытаться в черный список " плохих "символов. Какие типы данных вы хотите, чтобы пользователи могли вводить данные? Просто регулярный текст? BBCode + текст? Html?
источник
2011-06-10 19:42:40 emeth
Ничего себе, спасибо за долгий ответ! Я действительно не хочу, чтобы они вводили ничего, кроме небольшого стиля (например, жирный и курсив), и я думаю, что соединение было бы неплохо. Вот и все ...Я никогда не пытался создать текстовое поле, подобное этому, и я не хочу, чтобы это было слишком сложно для них ... Я собираюсь настроить это: http://www.themaninblue.com/ Эксперимент/widgEditor/ Я не знал, что могу применить этот тип белого списка; не могли бы вы показать мне тот, который позволяет только смело, курсив и ссылки? Затем я настрою widgEditor соответственно и сделаю все возможное, чтобы настроить очиститель HTML :) Спасибо! – tylerl
Смежные вопросы