我正在构建一个 webapp,用户可以动态创建 HTML 内容。允许他们创建以 开头的链接是否安全(egwrt XSS 攻击)#
?
我不知道为什么不会——也许我只是偏执。#
(对于URL ,我的 Javascript 代码没有做任何特别的事情。)
无论如何,我问的一个原因是我正在使用Google Caja 的 html-sanitizer来清理 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:....' 之类的链接做任何疯狂的事情?好吧,它不会(反正不是我的浏览器),但也许还有其他一些东西。 ..我不知道)