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