<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>防御 &#8211; ChaBug安全</title>
	<atom:link href="/tags/%E9%98%B2%E5%BE%A1/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>一个分享知识、结识伙伴、资源共享的博客</description>
	<lastBuildDate>Mon, 30 Jul 2018 05:27:51 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.5</generator>
	<item>
		<title>[XSS防御]HttpOnly之四两拨千斤</title>
		<link>/web/477.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sun, 29 Jul 2018 04:57:55 +0000</pubDate>
				<category><![CDATA[安全运维]]></category>
		<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[防御]]></category>
		<guid isPermaLink="false">/?p=477</guid>

					<description><![CDATA[今天看了《白帽子讲web安全》一书，顺便记录一下，HttpOnly的设置 httponly的设置值为 TRUE 时，使得Javascript无法获取到该值，有效地防御了XSS打管理...]]></description>
										<content:encoded><![CDATA[<blockquote><p>今天看了《白帽子讲web安全》一书，顺便记录一下，HttpOnly的设置</p></blockquote>
<p>httponly的设置值为 <code>TRUE</code> 时，使得Javascript无法获取到该值，有效地<span class="wpcom_tag_link"><a href="/tags/%e9%98%b2%e5%be%a1" title="防御" target="_blank">防御</a></span>了<span class="wpcom_tag_link"><a href="/tags/xss" title="XSS" target="_blank">XSS</a></span>打管理员的 <code>cookie</code></p>
<p>这里以本博客作为测试对象，实现了一下。</p>
<p>找到网站 <code>/include/lib/loginauth.php</code> 文件，如下修改：<br />
<a class="swipebox" href="https://upload-images.jianshu.io/upload_images/6661013-35fb80bf95a38cf0.png" target="_blank" rel="noopener"><img src="https://upload-images.jianshu.io/upload_images/6661013-35fb80bf95a38cf0.png" alt="代码修改" /></a></p>
<p>这里解释一下：在PHP&gt;5.2版本中支持HttpOnly设置，可以直接在php.ini文件中设置，个人不推荐这种方式，推荐如上图所述在设置cookie时设置。</p>
<p><code>setcookie()</code> 这个函数现支持7个参数，第七个参数是设置 <code>httponly</code> 的属性，第六个是是否开启 <code>https</code> 传输。</p>
<p>这样设置以后，就能有效地防止XSS获取用户的<code>重要cookie信息</code>。</p>
<p>效果如下：</p>
<p><a class="swipebox" href="https://upload-images.jianshu.io/upload_images/6661013-37290054bb68b852.png" target="_blank" rel="noopener"><img src="https://upload-images.jianshu.io/upload_images/6661013-37290054bb68b852.png" alt="httponly开启" /></a></p>
<p>使用<code>alert(document.cookie)</code>在控制台弹窗一下，发现并没有我们的登录信息cookie键值对：</p>
<p><a class="swipebox" href="https://upload-images.jianshu.io/upload_images/6661013-b78a0691e5ba37e8.png" target="_blank" rel="noopener"><img src="https://upload-images.jianshu.io/upload_images/6661013-b78a0691e5ba37e8.png" alt="无敏感登录信息cookie" /></a></p>
<hr />
<p>注意：<code>httponly</code>只是阻止了<code>js</code>获取<code>httponly</code>值为<code>true</code>所对应的<code>cookie</code>键值队，并不能拦截XSS，想要拦截XSS除了浏览器的filter以外，更多的是程序本身做好参数的过滤。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
