Я прочитал OSSAS XS prevention cheat sheet, но я действительно не признаю свое приложение с этими правилами. Я не чувствую, что у меня есть какая-либо уязвимость, указанная в этих правилах.В моем конкретном приложении PHP, что еще я могу сделать для уязвимостей XSS?
Я делаю PHP приложение, которое следует все следующие принципы:
Ни один ввод данных пользователем отображается непосредственно на странице HTML без обработки и продезинфицировать на серверной стороне
Все мои данные пользователя дезинфицируются с помощью
htmlentities()
. Этого достаточно? (Я использую подготовленные операторы для SQL-инъекции)Некоторые пользовательские данные имеют состояние
maxlength
, состоящее из 5 символов на стороне сервера. Защищает ли это от XSS? (так как я почти не вижу, чтобы код XSS был короче, чем 6 символов)Помимо данных из базы данных, только пользовательский ввод, отображаемый обратно пользователю, был отправлен на сервер через ajax, дезинфицированный с помощью
htmlentities
и повторно введенный в DOM с использованиемtext()
вместоhtml()
(используя JQuery)
я должен быть обеспокоен XSS в моем случае? Что еще я могу сделать, чтобы защитить себя от XSS?
Ihmo отношение к тому, чтобы иметь: вы всегда должны быть обеспокоены XSS, даже в приложениях Hello World. Опираясь на базовые функции, такие как maxlength validation/filtering, чтобы предотвратить xss вместо простого использования одной из функций экранирования, кажется ленивым. http://stackoverflow.com/questions/1996122/how-to-prevent-xss-with-html-php предлагает 'htmlspecialchars()' over 'htmlentities()' –
Привет, Майк, спасибо за ваш ответ. Я читаю это. – alexx0186
Очки, как правило, хорошие. Однако № 3 бесполезна. Вы никогда не должны полагаться на проверку на стороне клиента для обеспечения безопасности. Свойства полей ввода не помогут вашей безопасности. Однако кажется, что у вас есть основы. Это уже делает вас впереди. –