Список символов, которые нужно ограничить для защиты от XSS и SQL-инъекций? - PullRequest
3 голосов
/ 22 апреля 2011

Я просмотрел множество статей, чтобы найти простой список символов, который может ограничить ввод данных пользователем для защиты моего сайта от инъекций XSS и SQL, но не смог найти ни одного общего списка как такового.

Может ли кто-нибудь помочь мне, просто предоставив мне список безопасных или небезопасных персонажей на этот счет? Я знаю, что это может быть конкретным полем, но мне нужно это для текстового поля, где я хочу, чтобы максимально возможные символы.

Ответы [ 3 ]

5 голосов
/ 22 апреля 2011

Подход «черного списка» чреват проблемами.И для SQLi, и для XSS проверка входных данных по белому списку имеет важное значение, т.е. определите, что вы ожидаете , а не то, чего не ожидаете .Помните также, что пользовательский ввод - или «ненадежные данные» - происходит из разных мест: форм, строк запросов, заголовков, тегов ID3 ​​и exif и т. Д.

Для SQLi убедитесь, что вы всегда используете параметризованные операторы SQL,обычно в форме параметров хранимой процедуры или любого приличного ORM.Также примените «принципал наименьших привилегий» и ограничьте ущерб, который может нанести учетная запись, подключающаяся к вашей базе данных.Подробнее о SQLi здесь: http://www.troyhunt.com/2010/05/owasp-top-10-for-net-developers-part-1.html

На фронте XSS всегда кодируйте свои выходные данные и убедитесь, что вы кодируете их для соответствующего языка разметки, в котором они отображаются. Выходная кодировка для JavaScript отличается от HTML, которыйотличается от CSS.Не забудьте закодировать не только ответы, которые немедленно отражают входные данные, но также и ненадежные данные, хранящиеся в базе данных, которые могут содержать постоянную угрозу XSS.Подробнее обо всем этом здесь: http://www.troyhunt.com/2010/05/owasp-top-10-for-net-developers-part-2.html

Я знаю, что это выходит за рамки вашего первоначального вопроса, но я пытаюсь подчеркнуть, что допустимые символы - это лишь небольшая часть изображения.Другие практики, упомянутые выше, возможно, более важны (но вы также должны использовать эти белые списки).

5 голосов
/ 22 апреля 2011

Фильтрация символов - это не то, что вам нужно для обеспечения безопасности. Чтобы предотвратить внедрение SQL, используйте подготовленные операторы . Для предотвращения XSS вы должны экранировать все введенные пользователем данные

1 голос
/ 22 апреля 2011

Посмотрите на реализацию фильтрации xss в Drupal CMS.Функция имеет белый список, содержащий разрешенные теги HTML, все остальные элементы будут экранированы.

...