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. Nginx配置文档具体解释
  2. python教程课后答案-python从入门到实践课后习题第八章
  3. flash、div、iframe的层级
  4. 函数指针 如:void (*oper)(ChainBinTreee *p)
  5. PHP三种字符串界定符的区别
  6. location对象相关
  7. 怎么去除三角下拉_用什么方法可以有效去除外墙涂料?
  8. Spring - Configuration Metadata
  9. java把abcedf字符串进行排序_字符串合并处理 - 一贱书生的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. tf.keras与 TensorFlow混用,trainable=False设置无效
  11. CH2-Java编程基础(7个案例实现)
  12. outlook2010 pst文件过大解决办法
  13. Android多开/分身检测
  14. 2021最新C++面试题(附答案)
  15. jenkins安装Publish Over SSH
  16. 给大家分享两套WordPress收费主题
  17. 计算机c盘能备份数据吗,Win10不进系统就能备份C盘文件的方法,你知道吗?
  18. Android 音视频深入 十 FFmpeg给视频加特效(附源码下载)
  19. Digimat-MF:微观-宏观(两尺度)方法
  20. FlashFXP上传文件没数据,为0KB

热门文章

  1. centos共享文件夹_文件共享总结中篇Linux服务器文件共享
  2. 汉字转拼音pl/sql
  3. 星河滚烫,你是人间理想。
  4. Python正则表达式: 元字符/转义/分组/匹配原则/re模块属性方法大全
  5. Instagram,未来创业者的标杆
  6. SWUN 1165 - 司马称好
  7. echarts折线图的小圆点颜色
  8. 看到一个极品笑话,哈哈
  9. 链路技术(HCNA)——链路聚合
  10. java WEB常见的错误代码