XSS介绍

XSS(Cross Site Scripting,跨站脚本攻击)是一种常见的网络安全漏洞,允许攻击者在受害者浏览网站时,通过注入恶意脚本(如JavaScript)到网页中,从而窃取用户敏感信息、篡改页面内容或进行其他恶意行为。

XSS攻击通常分为以下几种类型:

  • 反射型XSS(Reflected
    XSS):攻击者将恶意脚本通过URL参数或Cookie传递给服务器,然后服务器将脚本返回给客户端,使得客户端执行恶意脚本。
  • DOM型XSS(DOM-based
    XSS):攻击者利用HTML注入漏洞,将恶意脚本插入到网页的DOM结构中。这种类型的XSS攻击较为难以防范,因为攻击者可以操纵整个文档对象模型(DOM)。
  • CSS型XSS(CSS-based
    XSS):攻击者将恶意脚本注入到样式表文件(如style.css)中,然后通过HTTP请求将该文件发送给服务器。当服务器解析并加载该文件时,恶意脚本会被执行。

防范措施

  • 对用户输入进行验证和过滤,避免恶意脚本注入。
  • 使用安全的编程技术,如对用户输入进行转义(如HTML实体编码)。
  • 使用HTTP-only Cookie(HttpOnly Cookie),防止JavaScript访问Cookie。

反射型XSS的攻击原理

反射型XSS(Reflected XSS)是一种常见的跨站脚本攻击(XSS)类型,攻击者通过将恶意脚本注入到受害者浏览器的地址栏中,使其在访问其他网站时执行恶意代码。
反射型XSS的攻击原理如下:

攻击者通过构造恶意URL,将其输入到受害者的浏览器地址栏中。例如,攻击者可以创建一个包含恶意脚本的网页,并将其URL设置为http://***.php?id=123#,其中id=123是受害者的会话ID。

当受害者访问http://*.php?id=123#时,浏览器会将该URL作为参数传递给.php文件。

**.php文件没有对URL参数进行过滤和验证,直接将参数值赋值给$_GET[‘id’]变量。

由于$_GET[‘id’]变量包含了恶意脚本,当**.php文件被执行时,恶意脚本会被加载到浏览器中,并在后续的页面请求中执行。

防范措施(PHP代码示例)

<?php
// 获取用户输入的数据
$input_data = $_GET['input_data'];// 对输入的数据进行过滤和验证,确保输入的数据符合预期格式
if (!preg_match('/^[a-zA-Z0-9]+$/', $input_data)) {// 如果输入的数据不符合预期格式,输出错误信息并终止脚本执行echo 'Invalid input data';exit();
}// 输出数据时,避免使用<script>标签,尽量使用AJAX等无脚本技术
echo 'Output data: ' . htmlspecialchars($input_data);
?>

从HTTP请求中获取用户输入的数据。使用正则表达式检查输入数据是否符合预期格式。如果输入的数据不符合预期格式,输出错误信息并终止脚本执行。使用htmlspecialchars()函数对用户输入进行编码,然后输出数据。可以避免恶意脚本注入,从而防范反射型XSS攻击。

DOM型XSS的攻击原理

攻击者构造一个包含恶意脚本的URL,例如http://***.php?id=123#,其中id参数会被服务器端解析为一个整数。

当用户访问http://.php?id=123***#时,浏览器会将该URL作为参数传递给**.php文件。

**.php文件没有对URL参数进行过滤和验证,直接将参数值赋值给$_GET[‘id’]变量。

由于$_GET[‘id’]变量包含了恶意脚本,当**.php文件被执行时,恶意脚本会被加载到浏览器中,并在后续的页面请求中执行。DOM型XSS

CSS型XSS(CSS-based XSS)是一种常见的跨站脚本攻击(XSS),攻击者通过将恶意脚本注入到受害者浏览器的样式表中,使其在访问其他网站时执行恶意代码。
防范措施(JavaScript代码示例)

function preventXSS(input) {// 对输入的数据进行过滤和验证,确保输入的数据符合预期格式if (!/^[a-zA-Z0-9]+$/.test(input)) {// 如果输入的数据不符合预期格式,输出错误信息并终止脚本执行alert('Invalid input data');return '';}// 将输入的数据转换为HTML实体,以避免恶意脚本注入var safeInput = encodeURIComponent(input);// 在页面中输出数据时,避免使用innerHTML等操作DOM的方法,改为使用createTextNode()方法var newNode = document.createTextNode(safeInput);var div = document.getElementById('myDiv');div.appendChild(newNode);return safeInput;
}// 在HTML文件中调用该函数,以防范DOM型XSS攻击
var inputData = preventXSS('Hello, world!');
var div = document.getElementById('myDiv');
div.innerHTML = 'Output data: ' + inputData;

定义了一个名为preventXSS的函数,用于对输入的数据进行过滤和验证。使用encodeURIComponent()函数将输入的数据转换为HTML实体,以避免恶意脚本注入。使用createTextNode()方法在页面中输出数据时,避免使用innerHTML等操作DOM的方法。在HTML文件中调用该函数,以防范DOM型XSS攻击。

CSS型XSS的攻击原理

攻击者构造一个包含恶意脚本的URL,例如http://***.php?id=123#,其中id参数会被服务器端解析为一个整数。

当用户访问http://.php?id=123#时,浏览器会将该URL作为参数传递给*.php文件。

**.php文件没有对URL参数进行过滤和验证,直接将参数值赋值给$_GET[‘id’]变量。

由于$_GET[‘id’]变量包含了恶意脚本,当**.php文件被执行时,恶意脚本会被加载到浏览器中,并在后续的页面请求中执行。

防范措施(JavaScript代码示例)

function preventXSS(input) {// 对输入的数据进行过滤和验证,确保输入的数据符合预期格式if (!/^[a-zA-Z0-9]+$/.test(input)) {// 如果输入的数据不符合预期格式,输出错误信息并终止脚本执行alert('Invalid input data');return '';}// 将输入的数据插入到style标签中,以避免恶意脚本注入var styleTag = document.createElement('style');styleTag.setAttribute('type', 'text/css');styleTag.innerHTML = 'body {background-color: ' + encodeURIComponent(input) + '}';document.head.appendChild(styleTag);return input;
}// 在HTML文件中调用该函数,以防范CSS型XSS攻击
var inputData = preventXSS('Hello, world!');
document.body.style.backgroundColor = inputData;

定义一个名为preventXSS的函数,用于对输入的数据进行过滤和验证,使用encodeURIComponent()函数将输入的数据转换为HTML实体,避免恶意脚本注入,创建一个style标签,并将输入的数据插入到style标签中,将style标签添加到文档头部,以使修改生效,在HTML文件中调用该函数,防范CSS型XSS攻击。

XSS漏洞原理及防范措施相关推荐

  1. 网站安全之XSS漏洞攻击以及防范措施

    在网站开发中,安全问题是重中之重的问题,特别像一个sql注入,XSS漏洞攻击,等的防范,如果不做好,网站将存在很大的隐患 XSS漏洞是网站漏洞中最容易出现的一种,至少现在的各大网站中基本都存在,传闻只 ...

  2. OWASP TOP10 大主流漏洞原理和防范措施,易理解版

    章节目录 回顾2017年和2021年OWASP主流漏洞都有哪些 一.访问控制崩溃 表现形式 防范 二.敏感数据暴露 防范 三.注入 sql注入分类 SQL盲注 SQL注入产生点 SQL注入的思路 盲注 ...

  3. XSS漏洞原理及攻击

    XSS漏洞原理 XSS介绍 XSS漏洞介绍 1. 跨站脚本(Cross-Site Scripting),简称为XSS或CSS或跨站脚本攻击,是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种. ...

  4. 简述xss漏洞原理及危害?xss漏洞有哪些类型?xss漏洞哪个类型危害最大?如何防御xss漏洞

    Xss漏洞原理:服务器对用户提交的数据过滤不严,导致浏览器把用户的输入当成了JS代码并直接返回给客户端执行,从而实现对客户端的攻击目的. 危害: 1.窃取用户Cookie 2.后台增删改文章 3.XS ...

  5. XSS漏洞原理和利用

    XSS漏洞原理和利用 XSS漏洞的危害 1.窃取用户Cookie,如果用户Cookie被窃取,攻击者可以不通过密码,而直接登录用户账户 2.使用XMLHttpRequest构造模拟用户请求操作 3.X ...

  6. XSS漏洞原理、分类、危害及防御

    一.XSS简介 XSS全称:跨站脚本(Cross Site Scripting) ,为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS:攻击者会向we ...

  7. XSS漏洞原理/方式/防御

    XSS又叫跨站脚本攻击 , 攻击的对象是客户端 原理 攻击者在Web页面插入恶意JS代码,用户浏览网页的时候,JS代码会被执行,从而攻击正常用户 危害 比如通过cookie获取管理员权限 ; 网页挂马 ...

  8. Xss漏洞原理分析及简单的讲解

    感觉百度百科 针对XSS的讲解,挺不错的,转载一下~ XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS, ...

  9. 前端网路与安全:XSS和CSRF的基本概念、攻击原理以及防范措施是什么?

    一.XSS跨站脚本攻击 攻击者想尽一切办法,将可以执行的代码注入到网页中. 1.1存储型 场景:常见于带有用户保存数据的网站功能,如论坛发帖,商品评论,用户私信等. 攻击步骤: 攻击者将恶意代码提交到 ...

最新文章

  1. Nand Flash,Nor Flash,BPI Flash,SPI Flash 的区别?
  2. Ninject + UnitTesting + Moq
  3. 《图像处理实例》之 曲线之间距离求解
  4. 2021泰晤士世界大学排名公布,中国137所高校上榜!
  5. 概念区分:并行、分布式、集群、云、超算
  6. 亚马逊涨了 $4 千亿?!为什么它能成为疫情中获益最大的公司
  7. 添加弹窗_阻止电脑广告弹窗窗口让电脑桌面更清洁
  8. 利用Samba搭建Backup Server配置文件
  9. java面试项目介绍,详细说明
  10. Redis开发与运维读书笔记
  11. 【小游戏】AB猜数字
  12. VAR模型及格兰杰因果检验——基于tushare平台的数据
  13. python练手_opencv面部相似度标记
  14. 计算机无法读取手机内存,手机内存卡不能读取如何解决
  15. Mac电脑怎么远程桌面连接?
  16. java 内存 监控_监控JVM内存使用情况
  17. Windows XP Professional with Service Pack 3 (x86)
  18. STM32 PWM周期与频率的计算
  19. 【C语言】C语言标准头文件
  20. 盘点android 开发工具,盘点Android开发者必备的十大开发工具

热门文章

  1. 用计算机比喻社会的句子,形容电脑卡的经典句子a
  2. 想要学好SEO,首先得了解SEO的发展史
  3. HTML结业做什么项目好,高薪就业-好程序员HTML5大前端12期毕业典礼!
  4. Mac电脑mds_store进程占用cpu过高
  5. 总监又来了,人狠话不多,这篇 gRPC,小弟佩服!
  6. python+djaongo的汉服文化交流网站汉服销售网站
  7. Win32汇编--如何使用资源 [菜单和加速键]
  8. c4d python sdk_C4D脚本自动接口完成脚本 Python Cinema 4D API auto completion (fake package)
  9. 炫舞服务器在维护,QQ炫舞手游服务维护中
  10. 【全网最全的博客美化系列教程】05.公告栏个性时间显示的实现