<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>XSS防御 on Last Stand</title><link>https://amatsuzero.github.io/LastStand/tags/xss%E9%98%B2%E5%BE%A1/</link><description>Recent content in XSS防御 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 03 Dec 2024 00:00:00 +0800</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/tags/xss%E9%98%B2%E5%BE%A1/index.xml" rel="self" type="application/rss+xml"/><item><title>XSS防御</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/security/security-001/</link><pubDate>Wed, 02 Oct 2024 00:00:00 +0800</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/security/security-001/</guid><description>&lt;h2 id="一简述"&gt;一、简述&lt;/h2&gt;
&lt;p&gt;跨站脚本（Cross-site scripting，简称为：CSS, 但这会与层叠样式表（Cascading Style Sheets，CSS）的缩写混淆。因此，跨站脚本攻击缩写为XSS）是一种网站应用程序的安全漏洞攻击。&lt;/p&gt;
&lt;p&gt;XSS攻击通常指的是通过利用网页开发时留下的漏洞，通过巧妙的方法注入恶意指令代码到网页，使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript，但实际上也可以包括Java、 VBScript、 LiveScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后，攻击者可能得到包括但不限于更高的权限（如执行一些操作）、私密网页内容、会话和cookie等各种内容。&lt;/p&gt;
&lt;h2 id="二xss类型"&gt;二、XSS类型&lt;/h2&gt;
&lt;p&gt;最常见的几种分类：&lt;strong&gt;反射型（非持久型）XSS&lt;/strong&gt;、&lt;strong&gt;存储型（持久型）XSS&lt;/strong&gt;、&lt;strong&gt;DOM型XSS&lt;/strong&gt;、&lt;strong&gt;通用型XSS&lt;/strong&gt;、&lt;strong&gt;突变型XSS&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="反射型xss"&gt;反射型XSS&lt;/h3&gt;
&lt;p&gt;反射型XSS只是简单的把用户输入的数据从服务器反射给用户浏览器，要利用这个漏洞，攻击者必须以某种方式诱导用户访问一个精心设计的URL（恶意链接），才能实施攻击。&lt;/p&gt;
&lt;p&gt;举例来说，当一个网站的代码中包含类似下面的语句:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;echo&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;lt;p&amp;gt;hello,&lt;/span&gt;&lt;span style="color:#e6db74"&gt;$_GET[&amp;#39;user&amp;#39;]&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;lt;/p&amp;gt;&amp;#34;&lt;/span&gt;; &lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果未做防范XSS，用户名设为&lt;code&gt;&amp;lt;script&amp;gt;alert(&amp;quot;Tz&amp;quot;)&amp;lt;/script&amp;gt;&lt;/code&gt;,则会执行预设好的JavaScript代码。&lt;/p&gt;
&lt;h4 id="漏洞成因"&gt;漏洞成因&lt;/h4&gt;
&lt;p&gt;当用户的输入或者一些用户可控参数未经处理地输出到页面上，就容易产生XSS漏洞。主要场景有以下几种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将不可信数据插入到HTML标签之间时；// 例如div, p, td；&lt;/li&gt;
&lt;li&gt;将不可信数据插入到HTML属性里时；// 例如：&lt;code&gt;&amp;lt;div width=$INPUT&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;将不可信数据插入到SCRIPT里时；// 例如：&lt;code&gt;&amp;lt;script&amp;gt;var message = ” $INPUT “;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;还有插入到Style属性里的情况，同样具有一定的危害性；// 例如&lt;code&gt;&amp;lt;span style=” property : $INPUT ”&amp;gt;&amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;将不可信数据插入到HTML URL里时，// 例如：&lt;code&gt;&amp;lt;a href=”[http://www.abcd.com?param=](http://www.ccc.com/?param=) $INPUT ”&amp;gt;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;使用富文本时，没有使用XSS规则引擎进行编码过滤。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;对于以上的几个场景，若服务端或者前端没有做好防范措施，就会出现漏洞隐患。&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id="攻击流程"&gt;攻击流程&lt;/h4&gt;
&lt;p&gt;反射型XSS通常出现在搜索等功能中，需要被攻击者点击对应的链接才能触发，且受到XSS Auditor(chrome内置的XSS保护)、NoScript等防御手段的影响较大，所以它的危害性较存储型要小。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://amatsuzero.github.io/LastStand/posts/frontend/security/security-001/image-01.webp"&gt;&lt;/p&gt;
&lt;h3 id="存储型xss"&gt;存储型XSS&lt;/h3&gt;
&lt;p&gt;​ 存储型（或 HTML 注入型/持久型）XSS 攻击最常发生在由社区内容驱动的网站或 Web 邮件网站，不需要特制的链接来执行。黑客仅仅需要提交 XSS 漏洞利用代码（反射型XSS通常只在url中）到一个网站上其他用户可能访问的地方。这些地区可能是&lt;code&gt;博客评论，用户评论，留言板，聊天室，HTML 电子邮件，wikis&lt;/code&gt;，和其他的许多地方。一旦用户访问受感染的页，执行是自动的。&lt;/p&gt;
&lt;h4 id="漏洞成因-1"&gt;漏洞成因&lt;/h4&gt;
&lt;p&gt;​ 存储型XSS漏洞的成因与反射型的根源类似，不同的是恶意代码会被保存在服务器中，导致其它用户（前端）和管理员（前后端）在访问资源时执行了恶意代码，用户访问服务器-跨站链接-返回跨站代码。&lt;/p&gt;
&lt;h4 id="攻击流程-1"&gt;攻击流程&lt;/h4&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://amatsuzero.github.io/LastStand/posts/frontend/security/security-001/image-02.webp"&gt;&lt;/p&gt;
&lt;h3 id="dom型xss"&gt;DOM型XSS&lt;/h3&gt;
&lt;p&gt;通过修改页面的DOM节点形成的XSS，称之为DOM Based XSS。&lt;/p&gt;</description></item></channel></rss>