【发布时间】:2012-02-03 06:29:18
【问题描述】:
我正在构建一个 web 应用程序,用户可以动态创建 HTML 内容。允许他们创建以# 开头的链接是否安全(例如 w.r.t. XSS 攻击)?
我不知道为什么不会——也许我只是偏执。
(对于# URL,我的 Javascript 代码没有做任何特别的事情。)
无论如何,我问的一个原因是我正在使用Google Caja's 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:....' 这样的链接做任何疯狂的事情?好吧它不会(反正不是我的浏览器),但也许还有其他一些.. .something...我不知道)
【问题讨论】:
标签: security url xss google-caja