javascript - 关于Javascript注入(inject)的问题

标签 javascript asp.net-mvc javascript-injection

我一直在 asp.net mvc 学习网站上阅读有关 JavaScript 注入(inject)的内容,伙计,这让我大开眼界。

我什至从未意识到/想过有人使用 JavaScript 进行一些奇怪的屁股注入(inject)攻击。

然而,它给我留下了一些悬而未决的问题。

首先

什么时候使用 html.encode?就像您是否仅在要显示该用户或其他用户提交的信息时才使用它?

还是我将它用于所有事情。比如说我有一个用户提交的表单,这个信息永远不会显示给任何用户,我应该还在使用 html.encode 吗?

我该怎么做,因为我不确定如何将 say 和 Html.TextBox() 放入 html.encode 标签中。

第二

发生了什么事说我的网站上有一个富 html 编辑器。允许用户使用它并使事情变得大胆等等。现在我想通过标签向用户显示信息。我无法对它进行 Html.Encode,因为那时所有粗体和内容都不会呈现。

但我不能让它保持原样,因为什么可以阻止用户添加一些 Javascript 攻击?

那我该怎么办?使用 Regex 过滤掉所有标签?

第三个

您还可以使用另一个名为“AntiforgeryToken”的标签,您什么时候使用这个标签?

谢谢

编辑

几乎每个人都说使用“白名单”和“黑名单”,我将如何编写此列表并将其与传入值进行比较(C# 中的示例会很好)?

最佳答案

好问题!

  1. 对于第一个答案,我会考虑寻找 here在之前的提问中。正如答案所讨论的那样,使用 HTML Encode 并不能完全保护您免受所有 XSS 攻击。为此,您应该考虑使用 Microsoft Web Protection Library (特别是 AntiXSS),可从 Microsoft 获得。

  2. 正如已经提到的那样,使用允许的标签列表是最好的做法,而其他标签则被剔除。

  3. AntiforgeryToken token 用于防止请求伪造 (CSRF),因为它为用户提供一个 cookie,该 cookie 在发布页面时根据呈现的表单字段进行验证。我没有理由知道这意味着您不能在所有表单中使用它。

关于javascript - 关于Javascript注入(inject)的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1157775/

相关文章:

javascript - 包含 Javascript 的最佳方式是什么?

Wordpress 上的 Javascript 注入(inject)预防

javascript - 在 asp.net mvc 中处理 javascript 注入(inject)

php - 在 PHP 中解析 Javascript(不是 JSON)

javascript - Meteor.js 循环数组以检查集合文档中是否已存在值

c# - MVC 中的 SOAP Web 服务 - 找不到路径 Controller 或未实现 IController

asp.net-mvc - ASP.NET MVC 2 - jquery ajax 响应失败

javascript - ASP.NET MVC JsonResult 日期格式

javascript - React - 拖动元素的 Angular 以调整内容大小

javascript - 在 Quill 中设置新增量后设置光标位置