CSRF跨站请求伪造
什么是混淆代理?
引用自Wikipedia的概念:
混淆代理是一个计算机程序,它被其他部分程序无辜地愚弄,以至于错误地使用自己的权限。它是特权扩大的一个具体类型。
在此类情形当中,代理就是浏览器,它受到了愚弄以至于误用其权限,将用户呈献给远程 网站。
本质很简单,CSRF是利用浏览器存储在本地的A站点cookie,在伪造的B站点中伪造请求, 再由浏览器打开新站点并且利用伪造的请求,读取A站点cookie,从而达到目的。
如何防止CSRF?
- 令牌验证
使用@Html.AntiForgeryToken辅助方法将会产生一个加密值作为隐藏的输入元素。 该值将与作为会话cookie存储在用户浏览器中的另外一个值相匹配,在提交表单 时,ActionFilter就回验证这两个值是否匹配。
- 幂等的GET请求
如果一个操作是幂等的,就可以重复执行多次而不改变执行结果,一般来说仅通过 使用POST请求修改数据库或者网站上的内容,就可以有效地防御全部CSRF攻击。
- HttpReferrer验证