如何在 ASP.Net 中实现 CSRF Guard
我需要在我的代码(asp.net)中实现CSRF(跨站请求伪造)防护。 虽然我从 OWASP 获得了一个库,但由于没有给出任何文档,所以实现它很痛苦。有人可以为我提供一种更简单的方法来在 .net 中实现 csrf 防护,或正确配置 OWASP 库吗?
谢谢
-Chandan
I need to implement CSRF(Cross Site Request Forgery) Guard in my code (asp.net).
Though I got a library from OWASP, implementing it is a pain since no documentation is given. Can someone provide me an easier way to implement csrf guard in .net, or configure OWASP library correctly ?
Thanks
-Chandan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
ASP.NET MVC
如果您使用的是 asp.net mvc,则可以使用防伪令牌。基本上在您看来,您将放置以下代码:
在您的控制器上,您将将此属性放在控制器的顶部:
这样做的作用是确保用户无法从远程站点提交表单,因为他们无法生成令牌。您还可以使用盐创建令牌。
ASP.NET WebForms
对于 asp.net Webforms,您可以重写 OnInit 方法并将 ViewStateUserKey 设置为会话 ID。 Web 表单将通过 MAC 检查来验证视图状态,从而起到防伪令牌的作用。由于攻击者无法生成有效的视图状态(因为他们无法将会话 ID 放入视图状态中,因此无法生成有效的 MAC),因此 MAC 将失败。您必须在每个页面上执行此操作,或者创建一个已经覆盖 oninit 的基类并执行此操作。
ASP.NET MVC
If you're using asp.net mvc you can use the anti-forgery token. Basically in your view you would place the following code:
And on your controller you would put this attribute at the top of the controller:
What this does is ensures that the user cannot submit the form from a remote site, because they are unable to generate the token. You can also create a token with a salt.
ASP.NET WebForms
For asp.net Webforms you can override the OnInit method and set the ViewStateUserKey to the the session id. Web forms will validate the viewstate with a MAC check thereby acting like an anti forgery token. Because an attacker cannot generate a valid viewstate (since they don't have the ability to generate a valid MAC because they can't put the session id in the viewstate) the MAC will fail. You will have to do this on each page, or create a base class that already overrides oninit and does this.