Я создаю веб-приложение, и пользователи могут создавать HTML-содержимое динамически.Безопасно ли (например, XSS-атаки) разрешить им создавать ссылки, начинающиеся с #
?
Я не знаю, почему этого не произойдет - возможно, я просто параноик.(Мой код Javascript не делает ничего особенного для #
URL-адресов.)
В любом случае, одна из причин, по которой я спрашиваю, состоит в том, что я использую html-sanitizer Google Caja для очистки HTML.Он фильтрует URL: s, , однако фильтр по умолчанию выглядит так:
function urlX(url) { if(/^https?:\/\//.test(url)) { return url }}
То есть протокол должен быть указан, и разрешены только HTTP и HTTPS, но не javascript:
.Недавно я изменил функцию фильтрации URL-адресов на:
function urlX(url) {
if (/^https?:\/\//.test(url) || /^#/.test(url)) return url;
}
(то есть, также допускается #....
.)
Я подумал, что, возможно, мне следует спросить, думаете ли вы #...
ссылки безопасны?
(Например, браузер не будет делать ничего безумного с такими ссылками, как `href = '# javascript: ....'? Ну, это не так (не мой браузер в любом случае), новозможно, есть что-то другое ... что-то ... о чем я не знаю)