跨站脚本攻击漏洞(XSS):基础知识和防御策略

数据来源

部分数据来源:ChatGPT  

一、跨站脚本攻击简介

1、什么是跨站脚本攻击?

        跨站脚本攻击(Cross-site scripting,XSS)是一种常见的网络安全漏洞,攻击者通过在受害网站注入恶意脚本代码,使得其他用户访问该网站时执行这些恶意代码,从而达到攻击的目的。

2、危害?

  • 获取用户信息:(如浏览器信息、ip地址、cookie信息等)
  • 钓鱼:(利用xss漏洞构造出一个登录框,骗取用户账户密码,提示登录过期,模拟一个网站的登录框,将用户名、密码发送到攻击者服务器)
  • 注入木马或广告链接:(有些在主站注入非法网站的链接,对公司的声誉有一定的影响)·
  • 后台增删改网站数据等操作:(配合CSR漏洞,骗取用户点击,利用s模拟浏览器发包)
  • xss蠕虫(微博蠕虫:只要看过某人的微博就是自动关注某人;贴吧蠕虫:看过某个帖子就是自动回复这个帖子) 

二、跨站脚本攻击漏洞类型及利用场景

跨站脚本攻击(Cross-Site Scripting, XSS)主要有以下三种类型:

  1. 反射型XSS:攻击者构造一个包含恶意脚本的链接,诱骗用户点击后触发攻击。
  2. 存储型XSS:攻击者将恶意脚本代码上传到目标网站数据库中,当其他用户访问该网站后执行恶意代码。
  3. DOM型XSS:攻击者通过DOM操作动态插入恶意脚本代码,然后用户触发恶意代码执行。

        XSS攻击可能导致用户个人信息泄露、账户被盗、钓鱼等风险,因此,网站开发者应该遵循安全编码规范,对输入输出做好过滤和转义工作,以防止XSS攻击。

攻击者利用XSS漏洞进行攻击的场景很多,以下是一些可能的情况:

  1. 盗取用户账号密码等个人敏感信息。
  2. 发布虚假信息诈骗资金或滥发垃圾信息等。
  3. 欺骗用户钓鱼、下载恶意软件等。
  4. 篡改网页内容、挂马、植入广告等。
  5. 利用XSS漏洞攻击服务器内网、渗透系统等。

为了防止XSS攻击,开发者需要加强输入输出数据的校验和过滤,减少脚本可执行内容,并及时更新补丁等方式来提高系统的安全性。

http://testfire.net  这是一个开源的测试网站,攻击这个网站不犯法。

1)反射型xss - 利用示例-测试网站是否存在反射型xss

先在输入框输入点东西,随便写如:hello、你好啊,李银河  如下图:

然后加上一些HTML标签,如:h1~h3、p、a等等

 <a href="https:www.baidu.com">你好啊,李银河</a>

李银河是谁?我也不知道.

        测试到这里我们就可以得出结论,这个网站存在反射型xss,可以被不法分子利用,出现这个漏洞的原因:写这个网站的前端开发人员没有对输入框的输入内容进行过滤,当然一般大型网站是没有这种漏洞的,Altoro Mutua这个网站是外国人专门开发给别学习测试攻击的所以有很多漏洞。

如果你需要在输入框执行JS代码则需要写在 <script>标签内,如:

<script>alert("hello,zhangsan")</script>

        alert() 这个函数的效果就是在页面弹窗,完整写法:window.alert() 简写: alert()

        或者输入:<img src=1 οnerrοr=alert(1)>     # img 是图像标签,src填写的是图片路径这里写1路径肯定是不存在的然后就报错,error 就是捕获报错的事件,on是绑定事件给这个img标签,“=”后面就可以跟我们要执行的JS代码

2)存储型XSS利用示例

这里我就使用DVWA靶场做测试(windows安装,kali安装)

首先,把靶场的安全等级调到最低

选择XSS存储

<script>alert("hello,zhangsan")</script>
<scr<script>ipt>alert("xss")</script>

刷新网页之后,弹框还是出弹出。

原因:输入框没有严格的筛选就存到了数据库中,网页从数据库拿出数据展示也没有做过滤。

可以查看源码,看看这个网页是如何写的

<?phpif( isset( $_POST[ 'btnSign' ] ) ) {// Get input$message = trim( $_POST[ 'mtxMessage' ] );$name    = trim( $_POST[ 'txtName' ] );// Sanitize message input$message = stripslashes( $message );$message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));// Sanitize name input$name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));// Update database$query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );//mysql_close();
}?> 

        trim()                                         #  trim()函数主要作用是移除字符串两侧的空白字符或其他预定义字符。
        mysql_real_escape_string()  # 函数会对字符串中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。
        stripslashes()               # 函数删除字符串中的反斜杠

        $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";   # INSERT INTO 是SQL的插入语句,这条代码主要是把$message(我们输入的留言内容)和$name(留言名称)分别插入到数据库的guestbook表的commentname字段中。对SQL基础语句不了解的可以看这篇:SQL的基本语句用法

        可以看到,对输入并没有做XSS方面的过滤与检查,且存储在数据库中,因此这里存在明显的存储型XSS漏洞

可以自行把安全等级调高然后查看源码,看看是如何做防御的(我这就不多讲了,有兴趣的可以看这篇:DVWA(XSS存储型) 我觉得他写的挺详细的)

不同的计算机语言防御方式是不一样的,不过原理都是相通的。

3)DOM型XSS-利用示例

DVWA靶场做测试 

跟之前的一样先把安全等级调到最低 

开始测试,原来的下拉列表的DOM结构如下图:(F12可以打开开发者模式,查看网页的结构代码)

 检测网站是否存在XSS的DOM漏洞

<script>alert("test")</script>

盗取网站的cookie 

<script>alert(document.cookie)</script>

防御的话,可以自行调高安全等级然后查看源码

三、防御策略

为了防止跨站脚本攻击(Cross-site scripting, XSS)对系统带来的安全威胁,以下是一些常见的防御策略:

  1. 对用户输入做好过滤和转义处理,避免被直接执行作为脚本代码。开发者可以使用一些现成的库和框架来实现数据过滤和转义,例如OWASP ESAPI、JQuery等。
  2. 在请求中包含HTTPOnly标记的cookie,避免JavaScript脚本获取Cookie值。
  3. 配置CSP(Content-Security-Policy)头部,限制页面资源的加载和执行,减少XSS攻击的可能性。
  4. 使用低特权账号和权限分离策略,避免敏感操作的恶意执行和篡改页面内容。
  5. 及时更新补丁和升级软件版本,以消除可能存在的安全漏洞。
  6. 对于发生XSS攻击的网站,及时清除和恢复受影响的数据,同时加强监控和日志审计,快速发现异常情况并进行处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/14053.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能监管趋严:拜登政府对ChatGPT等工具加强监管

一、AI风起云涌&#xff0c;监管迟来的关注 自从以ChatGPT为代表的大模型如同火箭一般腾飞&#xff0c;全球各国都开始关注这一新兴科技的发展。最近&#xff0c;美国政府表示需要开始考虑对像ChatGPT这样的人工智能工具进行监管。正如我们所见&#xff0c;ChatGPT已经吸引了超…

腾讯百余人因贪腐被辞退/ ChatGPT API将开放/ 《黑神话悟空》发售时间公开…今日更多新鲜事在此...

日报君 发自 凹非寺量子位 | 公众号 QbitAI 1月17日&#xff0c;一个平凡但又愈发靠近除夕的周二。 这个大好的日子里&#xff0c;科技圈都发生了哪些大事&#xff1f; 《黑神话悟空》将在2024年夏公开发售 “黑神话之悟空”游戏官方发布了兔年贺岁小短片《兔哥惊魂记》&#x…

如何用 ChatGPT 做数据进阶可视化?(三维交互图与动图视频)

你只需输入数据和需求&#xff0c;结果自然来。 自动可视化 在《如何用 ChatGPT 帮你自动分析数据&#xff1f;》这篇文章里&#xff0c;我已经为你介绍过 Code Interpreter 。它是 ChatGPT 的一个模式&#xff0c;目前还在 alpha 测试阶段。 Code Interpreter 可以接收文件输入…

【ChatGpt】解决视频框交换中的平滑过渡的问题

【ChatGpt】解决视频框交换中的平滑过渡的问题 问题抽象chatgpt 看看直接给参考代码 解决效果 问题 在视频的播放中&#xff0c;我们想调换下容器的位置 &#xff0c;在互调的过程中&#xff0c;如果需要重新进行数据的初始化&#xff0c;获取与加载&#xff0c;就会很慢&…

130亿参数开源模型「小羊驼-Vicuna」来了!复刻ChatGPT九成功力,GPT-4亲自监考

源&#xff5c;机器之心 OpenAI 的强大模型们&#xff0c;被开源社区复刻得差不多了。 过去几个月&#xff0c;OpenAI 的 ChatGPT 彻底改变了聊天机器人领域的格局&#xff0c;也成为其他研究赶超的对象。 以 Meta 开源 LLaMA&#xff08;直译为「大羊驼」&#xff09;系列模型…

chatgpt赋能python:Python就业学历要求

Python 就业学历要求 Python 是一门广泛应用于数据科学、人工智能、Web 开发和自动化等领域的编程语言&#xff0c;正在迅速成为行业内最受欢迎的语言之一。如果你想进入这些领域从事相关职业&#xff0c;那么 Python 编程技能将是你的一个优势。但是&#xff0c;Python 就业所…

Azure OpenAI 官方指南02|ChatGPT 的架构设计与应用实例

ChatGPT 作为即将在微软全球 Azure 公有云平台正式发布的服务&#xff0c;已经迅速成为了众多用户关心的服务之一。而由 OpenAI 发布的 ChatGPT 产品&#xff0c;仅仅上线两个月&#xff0c;就成为互联网历史上最快突破一亿月活的应用。本期从技术角度深度解析 ChatGPT 的架构设…

聚观早报 | ChatGPT炒股回报率超500%;网易发布11新游戏

今日要闻&#xff1a;微信支付正式发布“微信刷掌”产品&#xff1b;ChatGPT炒股回报率超500%&#xff1b;网易发布11新游戏&#xff1b;国家超算中心发布中文大语言模型&#xff1b;B站试水付费专属视频 微信支付正式发布“微信刷掌”产品 5 月 21 日&#xff0c;北京轨道交通…

chatgpt赋能python:Python在炒股领域的应用

Python在炒股领域的应用 Python语言在炒股领域的应用越来越广泛。Python具有易于学习、开发速度快、跨平台等优点&#xff0c;同时可以通过各种第三方库来获取财经数据、进行数据分析和可视化等操作&#xff0c;使其成为炒股界不可或缺的工具。 获取财经数据 Python编程语言…

chatgpt赋能python:用Python制作动画,你不可错过的工具

用Python制作动画&#xff0c;你不可错过的工具 Python是一种高级编程语言&#xff0c;最初被设计用于编写自动化脚本和简化复杂任务。然而&#xff0c;如今它越来越多地被用于创意和艺术性的项目&#xff0c;甚至是动画制作。 Python在动画制作中的优势一直受到赞誉。它是一…

chatgpt赋能python:制作简单动画:Python带你飞

制作简单动画&#xff1a;Python带你飞 Python不只是一门编程语言&#xff0c;它还能制作简单的动画。Python用于动画的库&#xff0c;有很多种&#xff0c;包括turtle、graphics.py和pygame等等。本文将以turtle为例&#xff0c;介绍如何使用Python制作简单的动画。 turtle简…

ChatGPT真神奇,但是也真焦虑

ChatGPT火爆 ChatGPT的火爆程度不用说也知道。就目前来说&#xff0c;已经开始冲击各行业了&#xff0c;比如客服、智能助手、语言学习、自然语言处理等等等。。 ChatGPT冲击 冲击最高的可能就是中间这个段位的了。高段位无法取代&#xff0c;但是低段位&#xff0c;通过使用Ch…

过于神奇的 ChatGPT

实在好奇究竟用的什么数据集&#xff0c;居然能得到下述问答&#xff1a; 最后又扣回了第一个问题「按照你的要求直接给出答案」&#xff0c;确实很强&#xff01;

一文看懂ChatGPT与存算一体化

ChatGPT开启大模型“军备赛”&#xff0c;存储作为计算机重要组成部分明显受益: ChatGPT开启算力军备赛&#xff0c;大模型参数呈现指数规模&#xff0c;引爆海量算力需求&#xff0c;模型计算量增长速度远超人工智能硬件算力增长速度&#xff0c;同时也对数据传输速度提出了…

戴眼镜检测和识别1:戴眼镜检测数据集(含下载链接)

戴眼镜检测和识别1&#xff1a;戴眼镜检测数据集(含下载链接) 目录 戴眼镜检测和识别1&#xff1a;戴眼镜检测数据集(含下载链接) 1. 前言 2.Eyeglasses-Dataset数据集说明 3.Eyeglasses-Dataset数据集下载 4.戴眼镜检测和识别&#xff08;Python版本&#xff09; 5.戴眼…

ChatGPT近视眼镜购买指南:防雾防尘、舒适度与价格平衡的完美选择

最近眼镜坏了&#xff0c;想买一个新的&#xff0c;之前对眼镜这块不是很了解&#xff0c;于是就问了ChatGPT4. 我&#xff1a;想买一个近视眼镜&#xff0c;需要注意什么&#xff1f;有没有防尘防雾的眼镜&#xff1f;需要加防蓝光功能吗&#xff1f; GPT&#xff1a; 在购买…

AR眼镜方案_基于ChatGPT的AR智能眼镜设计方案

AR眼镜是一种创新的技术&#xff0c;可以在用户的视野中显示虚拟物体和信息。然而&#xff0c;眼镜的人机交互一直是一个难题。幸运的是&#xff0c;ChatGPT的出现带来了新的解决方案&#xff0c;可以为AR眼镜提供更好的人机交互支持。 现在&#xff0c;用户可以通过对AR眼镜内…

谷歌全球大裁员,涉及1.2万人

Datawhale干货 方向&#xff1a;就业信息&#xff0c;来源&#xff1a;机器之心 最近几天科技领域的流行词不是某一项新技术&#xff0c;而是裁员。 1 月 20 日&#xff0c;谷歌母公司 Alphabet 在一份员工备忘录中表示&#xff0c;由于面临「变化的经济现状」&#xff0c;该公…

开源精神奠基人诞生 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 3 月 16 日&#xff0c;在 2005 年的今天&#xff0c;腾讯收购国内第二大邮件客户端软件 Foxmail。腾讯于当日正式签署了收购 Foxmail 软件及有关知识产权的协议…

平平无奇的营销小天才——ChatGPT

“悉之智能一直以来做的是AI解题方向的探索&#xff0c;目前ChatGPT有很强的同理心和理解能力&#xff0c;但相对缺乏逻辑能力&#xff0c;无法完成数学题之类更复杂的问题。“让AI获得逻辑能力&#xff0c;稳定完成更加复杂的任务&#xff0c;比如AI解体&#xff0c;或许会成为…