WEB应用的常见安全漏洞

  1. SQL 注入
    SQL 注入就是通过给 web 应用接口传入一些特殊字符,达到欺骗服务器执行恶意的 SQL 命令。SQL 注入漏洞属于后端的范畴,但前端也可做体验上的优化。

原因:
当使用外部不可信任的数据作为参数进行数据库的增、删、改、查时,如果未对外部数据进行过滤,就会产生 SQL 注入漏洞。
比如:id = “外部输入的值”;
SQL 语句: sql = "select * from users where id= + id;
上面的 SQL 语句目的是通过用户输入的用户名查找用户信息,因为由于 SQL 语句是直接拼接的,也没有进行过滤,所以,当用户输入 ‘’ or ‘1’=‘1’ 时,这个语句的功能就是搜索 users 全表的记录。
select * from users where id=1 or ‘1’=‘1’;

解决方案:
具体的解决方案很多,但大部分都是基于一点:不信任任何外部输入。
所以,对任何外部输入都进行过滤,然后再进行数据库的增、删、改、查。
此外,适当的权限控制、不曝露必要的安全信息和日志也有助于预防 SQL 注入漏洞。

  1. XSS 攻击
    XSS 攻击全称跨站脚本攻击(Cross-Site Scripting),简单的说就是攻击者通过在目标网站上注入恶意脚本并运行,获取用户的敏感信息如 Cookie、SessionID 等,影响网站与用户数据安全。XSS 攻击更偏向前端的范畴,但后端在保存数据的时候也需要对数据进行安全过滤。

原因:
当攻击者通过某种方式向浏览器页面注入了恶意代码,并且浏览器执行了这些代码。

比如:
在一个文章应用中(如微信文章),攻击者在文章编辑后台通过注入 script 标签及 js 代码,后端未加过滤就保存到数据库,前端渲染文章详情的时候也未加过滤,这就会让这段 js 代码执行,引起 XSS 攻击。

解决方案:
一个基本的思路是渲染前端页面(不管是客户端渲染还是服务器端渲染)或者动态插入 HTML 片段时,任何数据都不可信任,都要先做 HTML 过滤,然后再渲染。

  1. CSRF 攻击
    CSRF 攻击全称跨站请求伪造(Cross-site Request Forgery),简单的说就是攻击者盗用了你的身份,以你的名义发送恶意请求。
    原因:

一个典型的 CSRF 攻击有着如下的流程:
•受害者登录 a.com,并保留了登录凭证(Cookie)
•攻击者引诱受害者访问了 b.com
•b.com 向 a.com 发送了一个请求:a.com/act=xx(浏览器会默认携带 a.com 的 Cookie)
•a.com 接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求
•a.com 以受害者的名义执行了 act=xx
•攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让 a.com 执行了自己定义的操作
注:上面的过程摘自 前端安全系列之二:如何防止CSRF攻击?

解决方案
防止 CSRF 攻击需要在服务器端入手,基本的思路是能正确识别是否是用户发起的请求。

  1. XXE 漏洞
    XXE 漏洞全称 XML 外部实体漏洞(XML External Entity),当应用程序解析 XML 输入时,如果没有禁止外部实体的加载,导致可加载恶意外部文件和代码,就会造成任意文件读取、命令执行、内网端口扫描、攻击内网网站等攻击。
    这个只在能够接收 XML 格式参数的接口才会出现。

解决方案:
•禁用外部实体
•过滤用户提交的XML数据

  1. JSON 劫持
    JSON 劫持(JSON Hijacking)是用于获取敏感数据的一种攻击方式,属于 CSRF 攻击的范畴。
    原因:
    一些 Web 应用会把一些敏感数据以 json 的形式返回到前端,如果仅仅通过 Cookie 来判断请求是否合法,那么就可以利用类似 CSRF 的手段,向目标服务器发送请求,以获得敏感数据。

比如下面的链接在已登录的情况下会返回 json 格式的用户信息:
http://www.test.com/userinfo
攻击者可以在自己的虚假页面中,加入如下标签:

如果当前浏览器已经登录了 www.test.com,并且 Cookie 未过期,然后访问了攻击者的虚假页面,那么该页面就可以拿到 json 形式的用户敏感信息,因为 script 标签会自动解析 json 数据,生成对应的 js 对象。然后再通过:
Object.prototype.defineSetter
这个函数来触发自己的恶意代码。

但是这个函数在当前的新版本 Chrome 和 Firefox 中都已经失效了。
注:上面的过程摘自 JSON和JSONP劫持以及解决方法。

解决方案:
•X-Requested-With 标识
————————————————————————————————————————————
更多软件测试方面的知识,欢迎私信我进行交流沟通~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值