-1

我在我的网站上故意设置了一个易受攻击的表单来测试一些 xss 向量。然后我想用 href xss,如果 : 被过滤,那么 xss 怎么可能,因为你必须javascript:alert(1)像这样插入<a href="javascript:alert(1)"?说 %3A 也是不允许的。感谢任何可以帮助我的人。

4

1 回答 1

1

要从字面上回答您的问题,如果仅过滤<, >,和引号:%那么您仍然可以这样做

javascript&#58;

http://jsfiddle.net/zaN9m/

请不要将此作为仅添加此额外字符的提示。这正是你总是落后一步的游戏。如果你做“过滤掉所有坏字符”的事情,你将无法允许无害的输入,所以是的。

考虑一下当你开始寻找&#58;并且我通过时会发生什么javascript:&:#:5:8:;。过滤器不会&#58;在那里检测到,但会删除冒号,结果将是javascript&#58;在过滤掉冒号之后,它又是一个将死。

您要做的是查看 URL 是否具有方案并将其与已知的良好方案(如 http 和 https)进行匹配。然后,您还必须对结果应用 HTML 编码。这是防弹的,你不必玩游戏。

于 2013-07-04T23:02:50.120 回答