关于Javascript注入的问题
我一直在asp.NETMVC学习网站上阅读有关JavaScript注入的内容,这让我大开眼界 我甚至从未意识到/想过有人使用JavaScript进行一些奇怪的屁股注射攻击 然而,这给我留下了一些未回答的问题 首先 什么时候使用html.encode?比如,您是否仅在要显示该用户或其他用户提交的信息时才使用它 或者我什么都用它。比如说我有一个用户提交的表单,这个信息永远不会显示给任何一个用户,我应该仍然使用html.encode吗 我不知道如何将say和Html.TextBox()放入Html.encode标记中 第二 如果说我的网站上有一个丰富的html编辑器。用户可以使用它,并使事情大胆,无论什么。现在我想通过标签向用户显示信息。我不能使用Html。从那时起,所有的粗体和内容都不会被渲染 但我不能让它保持原样,因为什么能阻止用户添加一些Javascript攻击 那我该怎么办?使用正则表达式过滤掉所有标记 第三 还有另一个标签你可以使用,叫做“AntiforgeryToken”,你什么时候会使用这个 谢谢 编辑关于Javascript注入的问题,javascript,asp.net-mvc,javascript-injection,Javascript,Asp.net Mvc,Javascript Injection,我一直在asp.NETMVC学习网站上阅读有关JavaScript注入的内容,这让我大开眼界 我甚至从未意识到/想过有人使用JavaScript进行一些奇怪的屁股注射攻击 然而,这给我留下了一些未回答的问题 首先 什么时候使用html.encode?比如,您是否仅在要显示该用户或其他用户提交的信息时才使用它 或者我什么都用它。比如说我有一个用户提交的表单,这个信息永远不会显示给任何一个用户,我应该仍然使用html.encode吗 我不知道如何将say和Html.TextBox()放入Html.e
几乎每个人都说使用“白名单”和“黑名单”我如何编写这个列表并将其与传入值进行比较(C#中的示例很好)?对用户提交的任何显示数据使用HTML编码。在提交到数据库时,您不需要使用它,否则会得到一些奇怪的数据,如:Simon'&'Sons。实际上,我不认为在动态写入页面的任何内容上使用它有什么害处 使用允许的标记列表,并放弃HTML编辑器的所有其他内容。正如人们所说,使用白名单 第三个是为了防止攻击。您可以使用此功能来阻止人们使用用户提供的“被盗”cookie发布帖子。因此,在接受帖子之前,您可能需要一个经过身份验证的cookie,但恶意用户可能会在用户访问其站点时使用该cookie,然后向您的站点提交一份声明为他们的表单 请参见此处了解更多信息: 如何使用它:
始终根据白名单验证收到的输入。如果你使用黑名单,你可能也可能会遇到编码问题。验证输入时始终使用白名单 不要依赖客户端验证来验证用户输入。客户端验证对于帮助用户输入正确的数据非常有用。但是恶意用户不会使用此功能,并且可能会绕过客户端验证。客户端验证不应被视为安全修复。不应使用javascript验证输入。正如您所看到的,javascript非常容易在任何html页面上更改和修改。也可以在浏览器中禁用javascript。因此,在代码隐藏文件中进行额外检查
此外,每次都要验证输入,而不仅仅是在最初接受数据时。例如,如果设置cookie,请确保cookie的值相同,并且在每个请求上都是正确的。恶意用户可以在会话期间随时修改和更改该值。根据应用程序的设计考虑,可以实现不同级别的安全性 我将遵循以下基本规则:
你可以使用一个标签白名单而不是黑名单(就像这个网站一样)。因此,它和它的兄弟姐妹使用白名单:但你应该在所有形式中使用它。它会导致更多的服务器负载。我不喜欢为了使用而使用东西。