我只是不知道该怎么想.看起来制作javascript的人们不遗余力地允许它以百万种不同的方式编写,以便黑客可以拥有一个实地日.
我终于通过使用html敏捷包获得了我的白名单.它应该删除
因为它不在我的白名单加上任何onclick,onmouse等.
但是现在看来你可以在属性标签中编写javascript.
由于我允许SRC属性,我的白名单无法帮助我.所以我提出了在最后查看所有有效属性并查看它们内部的想法.
所以它会找到每个html标签的所有允许属性(所以src,href等).
然后我找到了innertext并把它放到小写字母.然后我对此字符串进行了"javascript"的索引检查.
如果找到索引,我从该索引开始并从该索引中删除每个字符.因此,在上述情况下,属性将保留为Src ="".
现在它似乎不够好,因为你可以做类似的事情
java脚本jav ascript
并且可能是每个字母之间的空格.
所以我不知道如何阻止它.如果它只是java和脚本之间的空间,那么我可以写一个简单的正则表达式,不关心它们之间有多少空格.但如果确实你可以在每个字母后放一个空格或标签或其他什么,那么我就不知道了.
然后,最重要的是你也可以做所有这些其他好方法
// will work apparently // will work apparently // will work apparently // will work apparently // will work apparently // will work apparently
http://ha.ckers.org/xss.html
我知道这是针对一些跨脚本攻击(我不是在制作一个XSS asp.net mvc已经很好地完成了这个)但是我不明白为什么它不能用于所有这些例子中的其他东西它会发出警报,因此可以用于其他事情.
所以我不知道如何检查和删除任何这些.
我正在使用C#,但我不知道如何阻止任何这些,并且不知道C#中的任何可以帮助我的东西.
似乎你想要清理javascript,为此你在C#/ .Net中实际上有一个很好的解决方案.
从CodePlex 下载Microsoft Web Protection Library.
如果你运行你的html片段,Microsoft.Security.Application.AntiXss.GetSafeHtmlFragment(html)
那么你将得到这个输出:
// will work apparently // will work apparently // will work apparently // will work apparently // will work apparently // will work apparently
清除所有脚本.