常见六大Web 安全攻防解析

2019-02-13  本文已影响0人  Mr老朝

一、XSS,跨站脚本攻击

1.非持久型 XSS(反射型 XSS )

发送带有恶意脚本代码参数的 URL,js从URL拿参数直接执行

2.持久型 XSS(存储型 XSS)

Form 表单提交,js拿可执行的字符串执行

3.防御

  1. 转义字符,对引号、尖括号、斜杠等进行转义,可借助require('xss')过滤
  2. CSP,设置 HTTP Header 中的 Content-Security-Policy,或者设置 meta 标签的方式 <meta http-equiv="Content-Security-Policy">

二、CSRF,跨站请求伪造

站点 A本地记录cookie生效的情况下,访问站点 B,B 站点发送恶意请求到站点A

防御
  1. 请求时附带验证信息,比如验证码或者 Token
  2. HTTP Referer 检查,但是在https跳转到http,不会发送referer

三、点击劫持

登陆 A 网站,打开第三方网站,它通过 iframe 引入了 A 网站,在它中点击,实际上是点击了 A 网站,例如伪造订阅

防御

  1. JavaScript 防御,self !== top不显示页面
  2. HTTP请求头X-FRAME-OPTIONSDENY不允许 iframe显示、SAMEORIGIN相同域名下iframe 可显示、ALLOW-FROM指定来源的 iframe可显示

四、URL跳转漏洞

借助未验证的URL跳转,熟悉的链接后面加上一个恶意的网址进行伪装

防御

  1. URL加入有效性验证Token
  2. referer,确定传递URL参数进入的来源

五、SQL注入

用户输入数据,服务器的sql拼接了输入的数据
例如万能钥匙,用户名admin' --,影响了sql为SELECT * FROM user WHERE username='admin' --' AND psw='xxxx'

防御

  1. 对字符串进行转义处理
  2. 不要直接拼接 SQL 语句,用参数化查询接口

六、OS命令注入攻击

用户输入的数据,shell运行输入的数据
例如:在接口中需要从 github 下载用户指定的 repo
exec(`git clone ${params.repo} /some/path`);
如果 params.repo 传入的是 https://github.com/xx/xx.git && rm -rf /* && 就糟糕了

防御

  1. 转义处理
  2. 正则对内容进行严格限制
  3. 借助一些工具做拼接、转义预处理,例如 Node.js 的 shell-escape npm包

本文为阅读笔记,详情请见常见六大Web 安全攻防解析

上一篇下一篇

猜你喜欢

热点阅读