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

it2025-05-24  21

一、XXS跨站脚本攻击

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

1.1 反射型

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

1.2 DOM -base型

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

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

1.3 存储型

攻击步骤:

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

防御措施:

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

整体的防御措施:

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

二、CSRF跨站请求伪造

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

三、SQL注入

原理:通过客户端的输入把SQL命令注入到一个应用的数据库中,从而执行恶意的SQL语句
最新回复(0)