我一直在 asp.net mvc 学习网站上阅读有关 JavaScript 注入的内容,这让我大开眼界。
我什至从未意识到/想过有人使用 JavaScript 进行一些奇怪的屁股注入攻击。
然而,它给我留下了一些悬而未决的问题。
第一的
你什么时候使用 html.encode?就像您仅在要显示该用户或其他用户提交的信息时使用它一样?
还是我将它用于所有事情。比如说我有一个用户提交的表单,这个信息永远不会显示给任何用户,我应该还在使用 html.encode 吗?
我该怎么做,就像我不确定如何在 say 和 Html.TextBox() 中放入 html.encode 标记一样。
第二
会发生什么说我的网站上有一个丰富的 html 编辑器。用户被允许使用它并使事情变得大胆等等。现在我想通过标签向用户显示信息。我不能 Html.Encode 从那以后所有的粗体和东西都不会被渲染。
但是我不能让它保持原样,因为什么会阻止用户添加一些 Javascript 攻击?
那我该怎么办?使用正则表达式过滤掉所有标签?
第三
您还可以使用另一个标签,称为“AntiforgeryToken”,您什么时候使用这个标签?
谢谢
编辑
几乎每个人都说使用“白名单”和“黑名单”我将如何编写此列表并将其与传入值进行比较(C# 中的示例会很好)?