как безопасно выписать сгенерированный пользователем текст в формате xhtml - PullRequest
1 голос
/ 26 февраля 2011

Как можно безопасно написать текст, сгенерированный пользователем, на веб-странице?

Есть ли полный список символов, которые нужно экранировать?

Символ ", +,: -x, вероятно, следует экранировать, но, вероятно, есть более полный список того, что необходимо сделать.

Я думаю о возможности сделать эксплойты, которые вставляют JavaScript или другие вещи это перенаправит страницу или все испортит. У молодого поколения столько творчества.

Ответы [ 4 ]

0 голосов
/ 26 февраля 2011

(Копирование моего собственного ответа на аналогичный вопрос - пожалуйста, сообщите мне, если это считается плохой практикой.)

Вы можете обратиться к Шпаргалке OWASP по предотвращению межсайтовых сценариев . Это сводится к:

  • Знание мест, где вам вообще не следует помещать ненадежные данные
  • Зная о различных способах экранирования данных в разных местах, где вы можете поместить ненадежные данные
  • Использование белого списка (экранирование всего, кроме указанных безопасных символов) вместо черного списка (экранирование только определенных небезопасных символов)

(Тем не менее, прочитайте весь документ, а не полагайтесь на это резюме ...)

0 голосов
/ 26 февраля 2011

Выход <, >, & и ' должно быть достаточным.

0 голосов
/ 26 февраля 2011

В зависимости от вашего серверного языка существуют специальные методы для этого.

0 голосов
/ 26 февраля 2011

Эта уязвимость называется атакой XSS.Различные языки программирования имеют функции, позволяющие автоматически выполнять экранирование, например, в php вы можете использовать функцию htmlspecialchars() для экранирования пользовательского текста, который будет отображаться в необработанном виде.Другие языки имеют аналогичные функции.

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

...