Разрешение пользователям вводить HTML - это разумно? - PullRequest
2 голосов
/ 11 января 2012

Мой сайт позволяет людям (всем, у кого есть бесплатная учетная запись) вводить текст.До сих пор я убирал теги HTML и т. Д., Чтобы гарантировать, что они не могут вводить что-либо вредоносное.Однако теперь клиент спросил, можно ли разрешить пользователям вводить html.

Смысл этого в том, что некоторые пользователи могут захотеть добавить более сложные вещи, такие как формы.Все, что они вводят, отображается на другой странице, позже - поэтому они могут захотеть форму, которую другие люди могут заполнить и отправить.

Мой вопрос: каковы риски с этим?Очевидно, что я избегал бы персонажей, чтобы снизить риск инъекционных атак, но что еще мне нужно знать?

Или это настолько рискованно, что я вообще не должен этого делать?

Ответы [ 2 ]

2 голосов
/ 11 января 2012

Существует много рисков - XSS является самым известным.

Если вы экранируете символы, HTML не будет отображаться (например, вместо ссылки вы увидите <a href="http://example.com">link</a>).

Разрешение HTML безопасным способом очень сложно.

Попробуйте использовать что-то вроде редактора уценок, используемого здесь в StackOverflow - wmd-new .

1 голос
/ 11 января 2012

Один сумасшедший бит ...

до справка гарантирует, что они не могут ввести ничего вредоносного

Никогда не принимайте меры безопасностизавершено :) Теперь перейдем к фактическому ответу ...


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

Этот битчто меня особенно беспокоит:

им может понадобиться форма, которую другие люди могут заполнить и отправить

Отправить на что?Они также каким-то образом проектируют серверную функциональность?Или они пишут формы для отправки на какой-либо внешний ресурс?Это звучит рискованно.

Тогда вы попадаете в такие вещи, как script теги.Очень злые вещи можно сделать здесь.И если пользователи достаточно сообразительны, чтобы создавать свои собственные HTML-формы (вручную? Или инструмент используется?) Для передачи данных на другие ресурсы, они, вероятно, достаточно хитры, чтобы написать немного JavaScript.

SimpleЭффекты разметки могут быть достигнуты с помощью редакторов, разработанных для этого .Но формы - это совершенно новая игра в мяч.Это звучит очень рискованно.

...