防止Javascript和XSS攻击

Kam*_*yar 6 javascript asp.net xss

我是xss-proofing我的网站javascript和xss攻击.它是用ASP.NET Webforms编写的.

我想测试的主要部分是一个用户控件,它有一个文本框(附加了tinyMCE).

用户可以通过在此文本框中书写来向网站提交故事.validateRequest因为我想在HMTL(tinyMCE)中获取用户故事,所以我必须设置为false.

我该如何防止javascript-xss攻击?由于用户的故事是HMTL文本,我无法使用Server.HtmlEncode他们的故事.一般来说,从用户接收HTML内容,保存然后将其显示给用户的安全方法是什么?

如果一个用户将恶意代码放入文本框并提交,那么是否有可能会损害其他查看该文本的人?
谢谢.

Tim*_*Tim 4

如果您不清理用户在文本框中输入并提交的内容,那么是的,有可能造成伤害。

您可能需要查看Microsoft 反跨站脚本库,因为它旨在帮助开发人员防止此类攻击。

另外值得一看的是 OWASP 的跨站脚本 (XSS)

您可能还想研究 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 = &lt;b&gt;This is a test string&lt;/b&gt;&lt;script&gt;alert(&quot;alert!&quot;)&lt;/script&gt; and some other text with markup &lt;ol&gt;&lt;li&gt;1234235&lt;/li&gt;&lt;/ol&gt;

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>
Run Code Online (Sandbox Code Playgroud)

ASP.NET 控件和 HTMLEncode 我本来打算发布我从课堂上获得的信息,但我发现一个链接列出了完全相同的内容(针对 1.1 和 2.0),因此我将发布该链接以便于参考。您可能可以通过查看 MSDN 来获取有关未列出的特定控件(或 3.0/3.5/4.0 版本,如果它们已更改)的更多信息,但这至少应该作为您的快速入门指南。如果您需要更多信息,请告诉我,我会看看能找到什么。

ASP.NET 控制默认 HTML 编码

以下是来自 MSDN 博客之一的更全面的列表: 哪些 ASP.NET 控件自动编码?

  • 如果您没有执行任何其他验证,则将页面的 validateRequest 设置为 false ***应该***会让您担心:) 您需要查看 .NET 中可用的编码/解码方法。我 99% 确定有办法做到这一点,但我必须检查一些文档,它们正在工作。 (3认同)