No.14 笔记 | XSS漏洞:原理、类型与防御策略

一、HTML和JavaScript基础

1. HTML基础

  • HTML概述:超文本标记语言,用于实现页面跳转和显示数据。
  • 结构标准:包括<!doctype html>声明文档类型,<html>根标签,<head>头部标签和<body>主体标签等。
  • 标签分类:分为单标签(如<br/><hr/>)和双标签(如<a></a><html></html>)。
  • form标签:用于创建HTML表单,包含输入元素、菜单、文本区域等,用于向服务器传输数据。
  • iframe标签:允许在同一浏览器窗口中显示多个页面。

2. JavaScript基础

  • 概述:一种直译式脚本语言,与Java无关,可动态操作HTML内容、响应事件、读写HTML元素等。
  • 引入方式:可通过<script>标签直接在HTML中编写,也可引用外部文件。
  • 常用函数:包括alert()confirm()prompt()
  • 事件类型:包括鼠标事件、键盘事件和HTML事件,如onmouseoveronclick等。

3. Cookie和Session

  • Cookie:保存在客户端的文本文件,用于记录用户信息,分为本地Cookie和临时Cookie。
  • Session:存储在服务器的类HashTable结构,用于存放用户数据,通过SessionID标识。

二、XSS漏洞原理

  • 定义:XSS(Cross Site Scripting)是指攻击者将恶意脚本植入网页,当用户访问时脚本被执行。
  • 攻击流程
    1. 攻击者注入JS代码。
    2. 用户浏览包含恶意代码的页面。
    3. 浏览器执行恶意代码,达到攻击者目的。
  • 危害:包括弹框骚扰、挂马攻击、会话劫持、Cookie盗取、用户提权、账号盗取、DDOS攻击、蠕虫传播等。

三、XSS漏洞分类与利用

1. 反射型(非持续型)

  • 原理:恶意脚本附加在URL参数中,前端执行,不存储在后端。
  • 攻击步骤:攻击者构造特殊URL,用户访问后,服务端返回拼接后的HTML,浏览器执行恶意代码。

2. 存储型(持续型)

  • 原理:恶意代码存储在服务器,当用户浏览相关页面时执行,持久性存储。
  • 攻击步骤:攻击者将恶意代码提交到目标网站,用户访问时,服务端从数据库取出并返回给浏览器执行。

3. DOM型

  • 原理:XSS代码不需服务端解析,由浏览器端DOM解析触发。
  • 攻击步骤:攻击者构造特殊URL,用户访问后,浏览器端直接执行恶意代码。

四、XSS漏洞绕过方法

  1. 大小写绕过:如<ScRiPt>alert(1)</ScRiPt>
  2. 双写绕过:如<sc<script>ript>alert(/xss/)</script>
  3. 反引号绕过:绕过单双引号过滤。
  4. 关闭标签绕过:利用<>关闭标签。
  5. 超链接标签绕过:如<a href= >1</a>
  6. 图片链接绕过:如<img src=1 onerror=alert(1)>
  7. 编码绕过:利用八进制、十进制、十六进制编码、HTML实体编码、URL编码、base64等,以及空格、回车、换行符、tab、混淆等。

五、XSS漏洞防御

  1. CSP内容安全策略:禁止加载外域代码、外域提交,禁止内联脚本执行和未授权脚本执行。
  2. 设置HttpOnly:防止Cookie被窃取。
  3. 输入输出检查:在前端和后端进行,采用白名单或黑名单验证,对输出字符进行HTML编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Iam俪馨呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值