javascript - 防止 Javascript 和 XSS 攻击

标签 javascript asp.net xss

我正在对我的网站进行 javascript 和 xss 攻击的 xss 防护。它是用 ASP.NET Webforms 编写的。

我想测试的主要部分是一个带有文本框(附有 tinyMCE)的用户控件。

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

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

如果一个用户在文本框中放入恶意代码并提交,这是否有可能伤害其他查看该文本的人?
谢谢。

最佳答案

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

您可能想查看 Microsoft Anti-Cross Site Scripting Library ,因为它旨在帮助开发人员防止此类攻击。

另外值得一看的是 OWASP 的 Cross-site Scripting (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>

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

ASP.NET Controls Default HTML Encoding

这是来自 MSDN 博客之一的更全面的列表:Which ASP.NET Controls Automatically Encodes?

关于javascript - 防止 Javascript 和 XSS 攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6639859/

相关文章:

javascript - 如何将类添加到下两个元素并从当前两个元素中删除?

javascript - 如何: Pass Form Values from One Form To Another Form on Submission -Wordpress

javascript - 单击按钮可更改动态生成的焦点文本框中的文本

asp.net - 如何为 Entity Framework DBContext 显式指定连接字符串

python - 在服务器端将 python str.format 方法与用户提交的模板一起使用是否安全?

php - 如果已经使用 FILTER_VALIDATE_EMAIL,FILTER_SANITIZE_EMAIL 是否毫无意义?

javascript - 用于立即更改输入的 jQuery 事件处理程序

javascript - Jquery 下拉列表日期验证

c# - MediatR:INotification 处理程序被多次调用

JavaScript 被注入(inject)我的 PHP 页面