web常见安全漏洞分类
跨站脚本攻击(XSS)
- 介绍: 攻击者在web在页面通过表单等方式插入script代码,当用户浏览网页时候,script代码会被执行,从而达到攻击目的。
- 分类:
- 反射型(服务器渲染)。用户访问带xxs脚本url请求,服务端接受数据发送给浏览器,浏览器解析造成xss漏洞。
- 存储型。用户输入带XSS脚本的数据,服务端把数据存进数据库,页面被其他用户正常请求时,返回带XSS的数据。
- DOM类型。运用恶意脚本通过DOM动态地检查和修改页面内容。
- 危害:
- 修改网页内容
- 盗取cookie
- 页面重定向
- 收集用户浏览器信息
- 措施:
- 检测输入参数,对应<、>等字符进行过滤或者编码。
- 对输出参数进行htmlEncode编码或转义
- 设置httpOnly防御js获取cookie
- 设置csp(content-security-policy), 就是为了页面内容安全而制定的一系列防护策略. 通过CSP所约束的的规责指定可信的内容来源(这里的内容可以指脚本、图片、iframe、font、style等等可能的远程的资源)
SQL注入
- 介绍:SQL注入是利用WEB服务,把精心设计的SQL命令注入到后台数据库执行。
- 危害:
- 对数据库非法读取、删除、添加等
- 盗取用户铭感信息
- 措施:
- 不应直接用前端传过来的sql做拼接,而应该用预编译语句,绑定变量,不改变sql语义。
- 用户输入参数验证
- 对关键数据库设置只读,减少风险。
跨站点请求伪造(CSRF)
介绍:攻击者盗用你的身份,以你的名义发送恶意请求。
满足条件:
- 登录受信用网站A,并在本地生成Cookie
- 在不登出A网站情况下,访问危险的B网站。
- 案例:
- 如果登录电商网站赠送积分或者礼物,接口:http://www.mybank.com/Transfer.php?money=1000&to=zhangsan
- 攻击者在评论区发表:<img src=http://www.mybank.com/Transfer.php?money=1000&who=hacker>。 然后就源源不断收到礼物。
- 送礼物或礼物是有记录的,然后攻击者找到删除记录接口(发现是post方式),自己构造一个页面通过form表单删除,然后同window.location = ‘XXXX’ 返回之前网页。
措施:
- 验证HTTP referer字段,判断连接从哪个页面跳转过来。
- 不用get请求,改用post。
- 在http请求参数添加随机token,在服务器建立拦截器,如果请求中无token或者错误的token则拒绝请求。
- 添加验证码、滑块验证。
- chrome51版本以上 cookie设置Same-site,直接禁止第三方访问