美文网首页
常见六大Web 安全攻防解析

常见六大Web 安全攻防解析

作者: Mr老朝 | 来源:发表于2019-02-13 16:34 被阅读0次

    一、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 安全攻防解析

    相关文章

      网友评论

          本文标题:常见六大Web 安全攻防解析

          本文链接:https://www.haomeiwen.com/subject/utkdeqtx.html