前端攻防(XXS、CRSF、sql注入)

一、XXS跨站脚本攻击

  • 原理:恶意攻击者在web页面中插入一些恶意的script代码。
  • 攻击类型:丰持久性XSS攻击(反射型和DOM-base型)和持久性XSS攻击(存储型)

1.1 反射型

  • 攻击步骤:
  1. 攻击者将恶意XSS代码写在目标网站url的search中,将url发给受害者
  2. 受害者用户打开该页面,XSS代码作为输入提交到服务端,服务端将XSS代码从url中取出拼接到html中返回给浏览器
  3. 浏览器解析html的同时会执行XSS恶意代码
  4. 恶意代码执行后,获取用户信息并发送到攻击者的服务器
  5. 攻击者使用受害者的用户信息调用网站接口,进行违法操作
  • 防御措施:后端对提交数据进行处理

1.2 DOM -base型

  • 攻击步骤:
  1. 攻击者将恶意XSS代码写在目标网站url的search中,将url发给受害者
  2. 受害者用户打开该页面,目标网站前端使用js取出url中的恶意代码并执行
  3. 恶意代码执行后,获取用户信息并发送到攻击者的服务器
  4. 攻击者使用受害者的用户信息调用网站接口,进行违法操作
  • 防御措施:
  1. 后端对提交数据进行处理
  2. 前端将 html代码script代码 转义为普通文本后进行提交(正则替换标签名的箭头)

注:DOM-based型类似于反射型,区别是DOM-based型是在浏览器解析,而反射型是在服务端解析

1.3 存储型

攻击步骤:

  1. 攻击者将恶意代码提交到目标网站的数据库中(如论坛输入框中输入恶意代码并保存在该页面)
  2. 用户打开该页面,恶意代码再浏览器中执行
  3. 恶意代码执行后,获取用户信息并发送到攻击者的服务器
  4. 攻击者使用受害者的用户信息调用网站接口,进行违法操作

防御措施:

  1. 后端对提交的数据进行过滤
  2. 前端将 html代码script代码 转义为普通文本后进行提交(正则替换标签名的箭头)

整体的防御措施:

  1. cookie安全策略:
    在服务端设置cookie的时候,设置 http-only ,这样就可以防止用户通过js获取cookie
    http-only: 只允许http或https请求读取cookie,js代码无法读取cookie,发送请求时自动发送cookie
    secure-only: 只允许发送https请求时读取,发送请求时自动发送cookie
    host-only: 只允许主机域名与domain设置完全一致的网站才能访问该cookie
  2. 对HTML编码:页面某个标签中的内容,需进行html编码,将标签箭头<>等用正则转为纯文本,使script脚本无法执行
  3. 对HTML Attribute编码:html标签的属性,也需要进行编码
  4. 对URL进行编码

二、CSRF跨站请求伪造

  • 原理:攻击者盗用受害者身份,以受害者的名义发送恶意请求
  • 攻击步骤:
  1. 受害者登录信任网站A(有csrf漏洞的网站),在本地生成cookie,保存在浏览器中
  2. 在不登出A的情况下,访问危险网站B
  3. 危险网站B 向 网站A 发送一个跨域request攻击请求
  4. 向A发送的请求,都会带上之前的cookie
  5. A网站服务端收到请求,cookie验证通过,攻击请求处理成功
  • 分析:
  1. 当A网站使用get请求更新资源时
    则B网站可以简单的通过 <img src=http://www.A.com/api?someParams=xxx /> 标签来完成跨域的攻击请求
  2. 当A网站使用post请求更新资源时
    则B网站可以通过提交表单的方式(也是post请求)来进行攻击
  • 结论:
    CSRF攻击是源于WEB的隐式身份验证机制!
    WEB的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的!
  • 防御措施:
  1. 验证 HTTP Referer 字段
    Referer字段记录了http请求的来源地址
    服务端验证Referer字段记录的来源地址,若不是官网地址,则拒绝改请求
    缺点:
    1. Referer字段在某些浏览器上可被篡改
    2. 用户可在浏览器手动设置请求时不带Referer字段,则所有正常请求都会被拒绝
  2. 使用 token (推荐)
    1. 服务端生成token放在用户session或cookie中
    2. 前端请求时将token作为参数
    3. 服务端接收到请求,验证参数中token和session中token是否一致,若一致则为合法请求,否则为非法请求

三、SQL注入

  • 原理:通过客户端的输入把SQL命令注入到一个应用的数据库中,从而执行恶意的SQL语句
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值