我正在对我的网站进行 xss 防护,防止 javascript 和 xss 攻击。它是用 ASP.NET Webforms 编写的。
我想测试的主要部分是一个具有文本框(附加有tinyMCE)的用户控件。
用户可以通过在此文本框中写入内容来将故事提交到网站。我必须设置validateRequest
设置为 false,因为我想获取 HTML (tinyMCE) 格式的用户故事。
我应该如何防止 javascript-xss 攻击?由于用户的故事是 HMTL 文本,因此我无法使用Server.HtmlEncode
关于他们的故事。一般来说,从用户接收 HTML 内容、保存然后显示给用户的安全方法是什么?
如果一名用户将恶意代码放入文本框中并提交,这是否有可能伤害其他查看该文本的人?
Thanks.
如果您不清理用户在文本框中输入并提交的内容,那么是的,有可能造成伤害。
您可能想查看Microsoft 反跨站脚本库 http://www.microsoft.com/download/en/details.aspx?id=28589,因为它旨在帮助开发人员防止此类攻击。
还值得一看的是 OWASP跨站脚本 (XSS) https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29
您可能还想研究 HttpUtility.HtmlEncode 和 HttpUtility.HtmlDecode。我刚刚编写了一个快速测试,看起来它可能会解决您在下面的评论中的担忧(关于如何以正确的格式向其他用户显示数据):
string htmlString = "<b>This is a test string</b><script>alert(\"alert!\")</script> and some other text with markup <ol><li>1234235</li></ol>";
string encodedString = HttpUtility.HtmlEncode(htmlString);
// result = <b>This is a test string</b><script>alert("alert!")</script> and some other text with markup <ol><li>1234235</li></ol>
string decodedString = HttpUtility.HtmlDecode(encodedString);
// result = <b>This is a test string</b><script>alert("alert!")</script> and some other text with markup <ol><li>1234235</li></ol>
ASP.NET 控件和 HTMLEncode我本来打算发布我从课堂上获得的信息,但我发现一个链接列出了完全相同的内容(针对 1.1 和 2.0),因此我将发布该链接以便于参考。您可能可以通过查看 MSDN 来获取有关未列出的特定控件(或 3.0/3.5/4.0 版本,如果它们已更改)的更多信息,但这至少应该作为您的快速入门指南。如果您需要更多信息,请告诉我,我会看看能找到什么。
ASP.NET 控制默认 HTML 编码 http://msmvps.com/blogs/calinoiu/archive/2006/06/13/what-s-wrong-with-asp-net-html-encoding.aspx
以下是来自 MSDN 博客之一的更全面的列表:哪些 ASP.NET 控件自动编码? https://blogs.msdn.microsoft.com/sfaust/2008/09/02/which-asp-net-controls-automatically-encodes/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)