我在我的应用程序中使用C#WebBrowser。该WebBrowser接收Html输入作为字符串,例如这段相当简单的代码部分:
string HtmlToDisplay = UTF8Encoding.UTF8.GetString(Convert.FromBase64String(RawDataB64));
webBrowser1.DocumentText = HtmlToDisplay;
由于WebBrowser组件将执行HTML中包含的任何脚本,因此我需要通过“清除”显示的HTML字符串来防止XSS攻击。
我首先想到的是删除此链接中的脚本标签:https : //stackoverflow.com/a/19414886/969881
甚至甚至可以在该链接中使用HtmlAgilityPack:https : //stackoverflow.com/a/19414865/969881
但是我的同事说这还不够高效,因此我必须使用OWASP ESAPI来防止此类攻击。
1 /他是对的吗?
2 /如果是这样,是否可以使用OWASP ESAPI作为要显示在webBrowser组件中的数据的原始字符串清除器?
提前致谢,
删除script
标签并不能完全消除网页上JavaScript的使用。此方法有一些明显的解决方法。
例如:
<input type="button" onclick="document.getElementById('test').innerHTML = '';" />
对于OWASP ESAPI,它是开源的,这意味着希望破坏您的安全系统的高级用户可以浏览API的代码,并可能找到一种解决方法。
因此,您应该考虑购买其他类型的安全系统,并对字符串进行编码以使HTML标记在写入网页时无法正常运行。
就安全性而言,我绝对不会依赖简单地用<script>
空字符串替换所有实例。如上面的示例解决方法所示,这绝对不是有效的方法。编码字符串是防止大多数变通办法的一种相当不错的方法,尽管高级用户可以找到方法。
因此,请回答您的问题:
(1)是的,他是对的,有比编码字符串更有效的方法
(2)我个人不建议使用开放源代码的字符串清理器,因为用户可以浏览代码并可能找到破坏安全机制的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句