防止 Javascript 和 XSS 攻击

2023-12-26

我正在对我的网站进行 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 = &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 控制默认 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(使用前将#替换为@)

防止 Javascript 和 XSS 攻击 的相关文章

随机推荐

  • 将 NavigationView 背景更改为圆形在按下时不起作用

    我正在使用设置导航项背景app itemBackground在布局中
  • 如何从命令行覆盖 grails 配置

    我正在尝试覆盖dataSource url从命令行运行 grails 的值 示例 grails
  • 错误:包路径 ./compat 未从包中导出

    Note 我想我能够重现这个 参见堆栈闪电战示例 https stackblitz com edit angular fire start np32w7 file app 2Fapp component ts 错误在控制台中打印为 INTE
  • 如何在 SSIS 中的执行 SQL 任务中使用参数映射?

    我正在尝试检索的值Key通过 SSIS 中的简单 select 语句从表中获取Execute SQL Task 但没有运气找出这个错误 我使用了一个字符串数据类型的输入变量 并在参数映射中使用了该变量Execute SQL Task 执行查
  • 具有墓碑的哈希表的负载因子

    那么问题来了 在计算哈希表的负载因子时是否应该包括墓碑 我认为 考虑到负载系数是用来确定何时扩展容量的 所以不应该包括墓碑 一个明显的例子是 如果您几乎填充然后删除哈希表中的每个值 这里的插入非常容易 没有碰撞 所以我相信负载因子不应该包括
  • laravel phpunit 测试与 api 令牌身份验证

    如何在 phpunit 中添加授权标头 我正在测试需要 api token 的 json api laravel 文档提供了actingAs 方法 但这在我的情况下不起作用 因为 api 令牌与用户表不直接相关 EDIT public fu
  • 无法从 Objective-C 视图控制器访问 Swift var - iOS

    我有一个带有 Objective C 和基于 Swift 的视图控制器的应用程序 我正在以编程方式从我的一个基于 Objective C 的视图控制器之一打开一个基于 Swift 的视图控制器 我遇到的问题是我无法从 Objective C
  • 返回带有准备好的语句的时间戳

    我有一个自动生成的时间戳 每次在 mysql 表中插入或更新记录时都会创建该时间戳 有没有办法以类似于我使用密钥持有者返回新创建的 id 的方式返回此时间戳 KeyHolder keyHolder new GeneratedKeyHolde
  • Liferay集群[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道有关在 Glassfish 中安装 Liferay 集群的分步教程吗 谷歌给我找到了这篇文章 名为
  • Android布局动画在ImageView上从下到上和从上到下单击

    我在 Android 中创建了一个视图 我需要从下到上对其进行动画处理 反之亦然 当我点击ImageView我需要制作完整的动画RelativeLayout从下到上 就成功了 但是当我再次点击ImageView而且它并没有向下移动 另外 当
  • Morris.js 条形图未渲染悬停在文本上

    我正在使用 Morris js 条形图 由于某种原因 本应出现在 HOVER OVER 上的数字列在左下角 有人知道为什么吗 如果没有任何代码 很难给出一个好的答案 但是 它可能与您的 CSS 文件有关 莫里斯用它来放置胡佛 CSS mor
  • 我如何增加 inputAccessoryView 的高度

    我在这个问题上花了几天时间 但没有看到解决方案 我有一个inputAccessoryView其中包括一个UIView含有一个textView和两个按钮 的行为inputAccessoryView符合预期 并且在除一种情况外的所有情况下都工作
  • 打开 .exe 并通过 Python 子进程向其传递命令?

    所以我的 exe 程序已打开 但我想从 python 脚本将字符串传递给它 我像这样打开exe import subprocess p subprocess Popen E Work my exe shell True let user f
  • Android:无法让 YouTube Player API 在片段内工作

    我正在尝试让我的应用程序在片段中播放 YouTube 视频 如下所示本官方文档 https developers google com youtube android player reference com google android
  • 如何使用 jQuery 检查文本字段值与数组中的单词?

    我的数组有字符串值 var bannedWords cat dog test 我的文本输入字段检查该值是否包含数组中的单词 var title j edit content val if j inArray title bannedWord
  • 返回层次结构中第 N 级的类别名称(parentId -1 的类别位于第 1 级)

    数据样本 WITH sample data AS SELECT CategoryId ParentCategoryId Name Keywords FROM VALUES 100 1 business Money 200 1 tutorin
  • 托管目标代码需要“\clr”选项:错误

    当我尝试批量构建项目时 在启用 clr 运行时支持时遇到此错误 我的项目可以毫无问题地运行 并且只有当我尝试进行批量构建时才会收到此错误 我在 google 中进行了大量搜索 但大多数结果都是关于启用 clr 选项 我想知道如何解决这个问题
  • 在 ASP.NET MVC5 中绑定 @Html.DropDownListFor 的最佳方法是什么?

    我要绑定 Html DropDownListFor from Model不使用数据Viewbag并查看网络上的许多不同示例 但大部分都用Viewbag或扩展方法 我想要一个更好的方法来解决这个问题 我尝试了以下方法 但似乎不起作用 Html
  • Linspace 与 Range

    我想知道什么是更好的风格 更高效 x linspace 1 1 100 or x 1 0 01 1 正如奥利 查尔斯沃斯提到的 linspace你划分区间 a b into N点 而与 形式 你走出a以指定的步长 默认 1 直到达到b 要记
  • 防止 Javascript 和 XSS 攻击

    我正在对我的网站进行 xss 防护 防止 javascript 和 xss 攻击 它是用 ASP NET Webforms 编写的 我想测试的主要部分是一个具有文本框 附加有tinyMCE 的用户控件 用户可以通过在此文本框中写入内容来将故