Джанго спасается для HTML в JSON - PullRequest
2 голосов
/ 06 ноября 2010

Я просматривал сайт django в поисках проблем с xss. Я подумал, что покрыл это, так как Django делает автоматический побег. Поэтому я поставил обычное оповещение ('foo'); в примерах данных я обнаружил огромную дыру, в которой я использую ajax для перетаскивания данных как json и использую jquery.append для их добавления, но для html ничего не экранируется.

Итак, мой вопрос, как лучше всего это исправить:

  • Используйте мою собственную копию simplejson, которая автоматически экранируется на основе параметра.
  • Просто убедитесь, что я всегда использую escape () при создании диктов, которые будут выбрасываться json
  • Всегда используйте .text на стороне клиента
  • Что-то, о чем я не думал

Кажется, что это довольно легкая проблема, чтобы разобраться в этом.

1 Ответ

0 голосов
/ 06 ноября 2010

Сделайте что-то очевидное / прозрачное / автоматическое, как предложил Джоэл: http://www.joelonsoftware.com/articles/Wrong.html

Тем не менее, я не вижу, как "alert ('foo');" может быть вредным при внедрении в HTML. Что может быть вредным, если он будет окружен тегом .

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

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