Проверка правильности ввода - PullRequest
4 голосов
/ 14 сентября 2010

На моем сайте есть форум, и я хочу избежать межсайтовых скриптов. Знаете ли вы хороший сценарий проверки ввода?

Ответы [ 7 ]

1 голос
/ 24 сентября 2010

Я всегда полагался на PHP-фильтры OWASP: http://www.owasp.org/index.php/OWASP_PHP_Filters Как видно из названия, они на стороне сервера (проверка JavaScript или HTML5 полезна только для помощи пользователю) и OWASP (Проект безопасности открытого веб-приложения) является некоммерческой организацией.

1 голос
/ 14 сентября 2010

Существует два способа избежать межсайтового скриптинга.

  1. Фильтрация входных данных пользователями (в основном тегами сценариев и HTML-тегами) как на стороне клиента, так и на стороне сервера.
  2. Отображать содержимое в виде объектов HTML, чтобы избежать межсайтовых сценариев.Конечно, если вы хотите показать некоторые из тегов, выберите первый вариант.В противном случае второй вариант более надежен.

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

0 голосов
/ 30 сентября 2010

На стороне сервера

http://www.php.net/manual/en/function.html-entity-decode.php

http://www.php.net/manual/en/function.addslashes.php

http://www.php.net/manual/en/function.stripslashes.php

Проверьте больше нужных вам функций строкидля проверки

на стороне клиента

http://www.position -relative.net / creation / formValidator /

лучше написать свойсобственный код jquery, в будущем он может помочь вам

0 голосов
/ 29 сентября 2010

У вас есть два варианта для проверки.для нечувствительных данных на стороне клиента может быть использован JavaScript.в JavaScript вы можете написать простую функцию для проверки ваших данных.

для конфиденциальных данных, вы должны использовать сценарии на стороне сервера, такие как, php, jsp, asp, asp.net и т. д.

можетэто поможет вам.

0 голосов
/ 29 сентября 2010

Я согласен с anand, что существует два основных способа избежать XSS: проверка на входе и выход на выходе. Для проверки ввода формы свяжите с Django Form Validation Framework: http://code.google.com/appengine/articles/djangoforms.html

Вот несколько примеров кода для санации на выходе в шаблонизаторе Django. Вместо этого:

Welcome, {{ firstname }}!

Сделайте это:

Welcome, {{ firstname|escape }}!

Это из этого очень хорошего поста в блоге: http://startupsecurity.info/blog/2008/10/28/avoid-xss-on-google-app-engine/

0 голосов
/ 25 сентября 2010

Simple.Убедитесь, что вы экранировали HTML от входного объекта, прежде чем использовать его.Таким образом, отправленные данные будут обрабатываться как необработанный текст.Способ сделать это - пропустить ввод через некоторый парсер, прежде чем встраивать данные в вашу страницу (или как-то с этим работать).

0 голосов
/ 14 сентября 2010

Это зависит от того, куда вы хотите записать данные. Например, вам нужен другой фильтр, когда вы пишете текст в поле ввода и когда вы пишете его просто в html тело, между двумя тегами.

Вы должны реализовать разные фильтры для разных типов данных на стороне сервера. Я предлагаю вам фильтровать текст, когда он распечатывается, а не когда пользователь отправляет его вам (разумеется, речь идет не об инъекциях sql и других хитростях на стороне сервера), потому что (как я уже упоминал выше) тип фильтра, который вам следует использование зависит от того, где распечатаны данные.

Если вы хотите написать действительно простой форум, то достаточно написать только один фильтр, который просто удаляет все html-теги из текста перед его распечаткой. Осторожно, это не подходит для расширенных функций, например, для редактирования комментариев, когда вы предварительно заполняете форму для пользователя, или если пользователи могут использовать любой html-тег в своих комментариях и т. Д.

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