- 使用 HTTP 动词篡改的认证旁路
这个问题是指不使用规范的访问方式也能返回页面内容
解决方案:
服务的架构是nginx + 后端网关,通过在nginx设置支持的http请求类型,解决此问题。
if ($request_method !~ ^(GET|POST|DELETE|PUT|PATCH|HEAD|OPTIONS)$ ) {
return 403;
}
-
跨站点请求伪造
CSRF(Cross Site Request Forgery) 跨站请求伪造。
简单概括csrf攻击如下:
用户登录A网站后,浏览器记录A网站cookie信息,此时访问B网站,并点击某些危险链接,导致A网站的cookie被携带,像A网站发送一些请求,产生用户数据安全问题。
解决方案:
根据原理,常用解决方案有两种。
(1)在A网站验证请求来源,即验证http 请求的HTTP Referer字段,我们也是利用此方式来防范CSRF攻击。
valid_referers none blocked server_names www.baidu.com;
if ($invalid_referer) {
return 403;
}
(2)前端请求时生成一个随机token,后端验证此token的有效性,请求中不携带token或者token验证失败则认为是非法请求。
- 重定向钓鱼
系统中主要使用了cas来实现单点登录,cas 支持登录后的重定向,并且未对重定向地址进行校验,导致登录成功后可以跳转到任意地址。
解决方案:
nginx中增加对重定向地址校验
if ( $args !~* "service=http://localhost/"){
return 403;
}
- XSS攻击