今天我测试我的ASP.NET MVC网络应用程序,我发现任何人都可以轻松提交我们的网站形式,而无需访问我的网站?
例如: example.com/home/test
[HttpPost] public ActionResult Test(string name) { return View("home"); }
如果其他网站制作此表格,当用户填写我的网站将影响的表格.
我是否可以通过我的网站或其他方式检查用户提出的请求.
听起来您可能正在寻找一些跨站点请求伪造(CSRF)帮助.ASP.NET MVC有一个非常简单的工具来帮助它:
如果您<%= Html.AntiForgeryToken() %>
在提交的表单中包含:则可以使用该[ValidateAntiForgeryToken]
属性标记您的操作方法,并且可以很好地处理停止CSRF攻击.不要相信我的话,请查看史蒂夫桑德森关于它的[旧]博客文章,它应该包含你需要的所有背景和信息.
http://blog.stevensanderson.com/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/
使用[Authorize]
筛选器可防止匿名用户访问控制器或操作.
http://davidhayden.com/blog/dave/archive/2009/04/09/CustomAuthorizationASPNETMVCFrameworkAuthorizeAttribute.aspx