我目前正在ASP.net中开发MVC应用程序。我正在使用AJAX.ActionLink在记录列表中提供删除链接,但是这是非常不安全的。我把这个:
<AcceptVerbs(HttpVerbs.Post)>
在函数上执行删除操作,这将阻止仅通过URL调用函数。但是,仍然存在的另一个安全漏洞是,如果我要制作具有以下内容的基本html页面:
<form action="http://foo.com/user/delete/260" method="post"> <input type="submit" /> </form>
仍然会在不同的位置执行帖子。
可以将AntiForgeryToken与AJAX ActionLink一起使用吗?如果是这样,这是一种安全的方法吗?我还没有意识到更多的安全漏洞吗?
我不特别了解AJAX ActionLink,但是可以从WebForms页面发布到具有[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken]属性的MVC操作。
[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken]
您可以使用反射来获取用于设置Cookie的MVC方法和用于MVC验证的匹配表单输入。