谈谈跨站攻击CSRF(Cross-Site Request Forgery)
最近刚收到一份关于网站的检测报告,其中【可能存在CSRF攻击】占了很大比重
网上搜索下资料才知道CSRF是什么:
简单来说就是在用户不知情的情况下, 令一个网站向另外一个网站发出处理请求。基于Cookie的用户验证、授权已经不能完全保证网站的使用安全了。
那如何处理这个问题那?
其实处理这个问题也十分简单,如果要保证请求是来自同一个网站,需要在表单中加入隐藏域,写入唯一的标识,并且这个标识每次刷新都会变化,这样在服务接口接收到请求时先验证那个写入到隐藏域中的唯一标识,如果不同返回错误信息即可。
Asp.Net MVC 处理起防止CSRF就非常简单
在View->Form表单中:<%:Html.AntiForgeryToken()%>
在Controller->Action动作上:[ValidateAntiForgeryToken]