Как я могу позволить моему пользователю вставлять код HTML без рисков? (не только технические риски)

Мне удалось найти решение со следующим

window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory + "Android/data/app.name/files/", success, fail);
11
задан bdukes 31 March 2009 в 15:29
поделиться

8 ответов

При использовании php отличное решение состоит в том, чтобы использовать HTMLPurifier. Это имеет много опций отфильтровать плохой материал, и как побочный эффект, гарантии хорошо сформированный вывод HTML. Я использую его для просмотра спама, который может быть враждебным окружением.

15
ответ дан 3 December 2019 в 01:53
поделиться

Действительно не имеет значения, что Вы надеетесь удалять, кто-то будет всегда находить способ обойти его. Как ссылка смотрят на эту Шпаргалку XSS.

Как пример, как Вы когда-либо собирающийся удалять это допустимое нападение XSS:

<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>

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

Также используйте шпаргалку в своем тестировании; стреляйте так, как Вы можете в своем веб-сайте и пытаться найти некоторые способы выполнить XSS.

11
ответ дан 3 December 2019 в 01:53
поделиться

Общая лучшая стратегия здесь состоит в том, чтобы добавить в белый список определенные теги и атрибуты, которые Вы считаете безопасными, и выходите/удаляете из всего остального. Например, разумный белый список мог бы быть <p>, <ul>, <ol>, <li>, <strong>, <em>, <pre>, <code>, <blockquote>, <cite>. С другой стороны, рассмотрите человечески-благоприятную разметку как Ткань или Скидка с цены, которая может быть легко преобразована в безопасный HTML.

6
ответ дан 3 December 2019 в 01:53
поделиться

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

<scr<script>ipt etc="...">

Удаление из этого уедет

<script etc="...">
2
ответ дан 3 December 2019 в 01:53
поделиться

Если это - слишком трудное удаление тегов, Вы могли бы отклонить целые данные HTML, пока пользователь не вводит допустимый. Я отклонил бы HTML, если он содержит следующие теги:

frameset, кадр, iframe, сценарий, объект, встраивают, апплет.

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

Но вообще говоря, разрешение пользователю предоставить его собственный HTML-код всегда налагает некоторые проблемы безопасности.

0
ответ дан 3 December 2019 в 01:53
поделиться

Для примера C# белого подхода списка, который использует stackoverflow, можно посмотреть на эту страницу.

2
ответ дан 3 December 2019 в 01:53
поделиться

Вы могли бы хотеть рассмотреть, вместо того, чтобы позволить HTML вообще, реализовывая некоторое благоприятное положение для HTML как BBCode или Скидка с цены.

0
ответ дан 3 December 2019 в 01:53
поделиться

Помощник службы безопасности Коханы очень хорош. Насколько я помню, он был взят из другого проекта.

Однако я проверил

<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>

Из ответа LFSR Consulting , и он правильно ускользнул.

1
ответ дан 3 December 2019 в 01:53
поделиться
Другие вопросы по тегам:

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