Санитарный ввод, который позже появится в HTML - PullRequest
3 голосов
/ 30 апреля 2011

У меня есть <textarea>, значение которого отправляется на сервер и сохраняется в базе данных. Затем это значение затем отображается на разных страницах в HTML.

Что мне нужно сделать, чтобы продезинфицировать это? Просто удалить теги HTML? (Это уже безопасно для SQL-инъекций, потому что я использую хранимую процедуру и параметры.)

У кого-нибудь есть процедура дезинфекции?

Ответы [ 2 ]

2 голосов
/ 26 мая 2011

Не дезинфицировать вход.Вместо этого закодируйте это, когда вы выводите это.Это легко реализовать с помощью функций .net 4 (<%: ""%>) или с помощью проверки кода.

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

Не кодирование текста в базе данных даже экономит немного места для хранения.

В любом случае санировать ввод сложно.Это очень трудно сделать больше, чем просто кодировать все.Добавление в черный список HTML-тегов - это определенный способ забыть что-то, поэтому не делайте этого.

0 голосов
/ 30 апреля 2011

Либо полностью удалите теги, либо замените любые специальные символы, такие как < и >, их HTML-сущностями (&lt;). Какой бы серверный язык вы не использовали, вероятно, уже есть функция для этого. Например, PHP htmlspecialchars или strip_tags выполнят свою работу.

...