我一直在 asp.net mvc 学习网站上阅读有关 JavaScript 注入的内容,这真是令人大开眼界。
我什至从未意识到/想过有人使用 JavaScript 来进行一些奇怪的屁股注入攻击。
然而,它给我留下了一些悬而未决的问题。
First
什么时候使用 html.encode?就像您仅在要显示该用户或其他用户提交的信息时才使用它吗?
或者我用它来做所有事情。就像我有用户提交的表单一样,这些信息永远不会显示给任何用户,我应该仍然使用 html.encode 吗?
我该怎么做,就像我不知道如何将 html.encode 标签放入 Html.TextBox() 中。
Second
假设我的网站上有一个丰富的 html 编辑器,会发生什么情况。用户可以使用它并使内容变得大胆等等。现在我想通过标签向用户显示信息。我无法对其进行 Html.Encode,因为所有粗体和内容都不会被渲染。
但我不能让它保持原样,因为什么会阻止用户添加一些 Javascript 攻击呢?
那么我该怎么办呢?使用正则表达式过滤掉所有标签?
Third
您还可以使用另一种名为“AntiforgeryToken”的标签,您什么时候会使用这个标签?
Thanks
Edit
几乎每个人都说使用“白名单”和“黑名单”,我将如何编写此列表并将其与传入值进行比较(C# 中的示例会很好)?
好问题!
对于第一个答案,我会考虑寻找here https://stackoverflow.com/questions/53728/will-html-encoding-prevent-all-kinds-of-xss-attacks在之前提出的问题中。正如答案所讨论的,使用 HTML 编码并不能完全保护您免受所有 XSS 攻击。为了帮助解决这个问题,您应该考虑使用微软网络保护库 http://www.codeplex.com/AntiXSS (AntiXSS http://nuget.org/packages/AntiXSS特别是),可从 Microsoft 获得。
正如已经提到的,使用允许的标签列表是最好的做法,而其他标签则被删除。
AntiforgeryToken 令牌可以防止请求伪造 (CSRF),因为它为用户提供一个 cookie,该 cookie 在发布页面时根据呈现的表单字段进行验证。据我所知,这没有理由意味着您不能在所有形式中使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)