javascript: 以 // 开头的 URL 是否允许 XSS?

信息安全 xss
2021-08-15 21:36:28

我找到了一个标记处理器,它允许用户包含任意链接,只要它们包含“ netloc ”(//在第一个之后:)。由于 无数 利用的 协议 处理程序,这肯定是个坏主意。但它是否允许在没有易受攻击的协议处理程序的系统上使用 XSS?

我测试的所有浏览器(Chrome 22、FF 18、IE 9、Opera 12)在指向 时都没有显示任何内容javascript://alert('XSS'),但这肯定是因为我不够有创意。同样,javascript://alert('XSS')(这会使第一个双斜杠成为注释,而alert新行)也不起作用。

1个回答

是的,它允许 XSS。//如果您使用正确的技巧,您可以在之后注入换行符//使得该行的注释,但换行(如空格)在URL中不允许的,htmlencoded与否。简单地对其进行 urlencode,如下所示

<a href="javascript://%0Aalert('XSS');">XSS</a>