Задать вопрос

Экранирование вводимых данных

Хоу. Подскажите, хабравчане, пишу проект, есть поля, куда может вводить пользователь, скажем, добавлять на сайт новости, на какие вводимые символы стоит обратить внимание, чтоб их экранировать или удалить для предотвращения инъекций? Нагуглил вот такую тему, может посоветуете еще че-нить?
ЗЫ:
немного переформулирую вопрос — пользователь добавляет новость, вставляя теги, задача — отфильтровать вводимое, чтобы на выходе получился текст с html тегами, но при этом отфильтрованный от кода инъекций
  • Вопрос задан
  • 6535 просмотров
Подписаться 6 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
FanKiLL
@FanKiLL
Django html sanitizer

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

Или в гугле пишите python white list html sanitizer — если не найдете удоволетворяющюю всем требованиям библиотеку то точно поймете в какую сторону копать.

Или берете любой html парсер на python и пишете свой велосипед, просто проходтесь по дереву и удаляете теги которых нет в разрешенном листе. Так можно и кастомные теги сделать как на хабре например <slideshow>

Еще например если будет возможноть вставлять куски кода то в нутри тегов <code> нужно все экранировать чтоб если вставять кусок html или js в статье или коментариях оно не воиспроизводилось в браузере.

Вообщем там много нюансов, смотря что требуется.

Пишу с планшета, ошибок море, извиняюсь.
Ответ написан
Комментировать
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Не, лучше все-же не пугаться и заюзать ORM.
И то это не даст 100% гарантии в безопасности. Например, если у вас есть выпадающее меню для выбора сортировки по определенному полю, который вы невзначай так и передаете в БД в параметр ORDER BY.
Ответ написан
@Hint
Ничего вырезать не надо. При вставке в базу само собой экранировать кавычки (а точнее использовать PDO, плейсхолдеры, ORM или что-то подобное). А при выводе на страницу использовать htmlspecialchars, если речь о php.
Ответ написан
dizballanze
@dizballanze
Software developer at Yandex
Если вы используете django, то вам не стоит об этом беспокоится. ORM сам позаботится об экранировании кавычек. А в шаблонах все выводимые строки по-умолчанию экранируются для защиты от xss.
Ответ написан
FanKiLL
@FanKiLL
Просто там не только теги нужно чистить но и атрибуты у тегов, чтоб например не могли тексту поставить какой то css стиль с большими буквами и т.д.

Кстати недавно была статья на хабре там портировали хабра парсер на python.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы