2012-03-22 3 views
0

Я создаю блог и в настоящее время я заканчиваю панель администратора.предотвратить xss, но разрешить все html-теги

Поскольку я в основном буду, кто будет управлять им ... Я хочу, чтобы убедиться, что, когда я тип

<ul> 
    <li>test</li> 
    <li>test</li> 
</ul> 

покажет мне неупорядоченный список, но и предотвратить XSS тегов только в случае, если ...

как я могу это сделать?

Может ли решение создавать функции и заменять теги ul, ol, img и т.д ...?

+0

Конкретный ответ зависит от языка веб-программирования, который используется. Если бы это была, например, Java, вы могли бы использовать [Jsoup] (http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer) для этого. Пожалуйста, отредактируйте свой вопрос и укажите его соответствующим образом. – BalusC

+0

@BalusC пропустил это, обновил вопрос ... im используя php. – fxuser

+2

Вы можете использовать [Очиститель HTML] (http://htmlpurifier.org/). – ComFreek

ответ

1

Проверить этот URL - http://refactormycode.com/codes/333-sanitize-html

Существует еще одна полезная нить по этому вопросу и, как справиться с этим - What is the best way to store WMD input/markdown in SQL server and display later?

+1

Первым URL-адресом является html-sanitizer, созданный для StackOverflow, но обратите внимание, что он разрешает только небольшое подмножество тегов и не отвечает желанию OP разрешить «все теги html». –

+0

Кроме того, если вы хотите использовать уценку в качестве входных данных, ознакомьтесь с http://michelf.com/projects/php-markdown/ –

+0

@colin i указал пользователю метод в качестве образца, OP может видеть, как его можно использовать для вырезать XSS теги и расширять/повторно использовать. –

1

Стандартный способ борьбы с XSS, позволяя HTML заключается в следующем:

  1. запустить HTML через (реальный) HTML-парсер
  2. удалить любой элемент или атрибут, который не находится в белом списке (us e сторонний белый список в качестве отправной точки, изучите любые дополнительные элементы/атрибуты, которые вы добавляете, чтобы убедиться, что у них нет средств для инъекции JS, о которых вы не знаете).
  3. здравомыслие проверить все идентификаторы URI
  4. генерировать чистый HTML из DOM

Специфика будет зависеть от языка, который вы используете.

+0

+1 для '(реального) анализатора HTML' вместо регулярных выражений! – ComFreek

+3

Элемент (2) очень трудно сделать правильно самостоятельно. Например, если вы разрешаете элемент '' с атрибутом 'href', то' 'может стать сюрпризом для вас. И это до того, как вы получите выражение ''.В этой ситуации разумная вещь - использовать проверенную библиотеку. –

1

Что вы ищете, это дезинфицирующее средство для HTML. Их очень сложно написать правильно, поэтому вы должны посмотреть на существующую библиотеку. Для PHP взгляните на HTML Purifier.

Правильная защита XSS включает в себя более чем санитарную обработку html. Проект Application Security Open Web (OWASP) соединила каноническое руководство, чтобы избежать XSS атак:

XSS (Cross Site Scripting) Prevention Cheat Sheet

Смежные вопросы