XSS 学习与探索

什么是XSS攻击?

正常的页面被渗出了攻击者的js脚本,这些脚本可以非法地获取用户信息,然后将信息发送到attacked的服务端。

XSS是需要充分利用输出环境来构造攻击脚本的。

危害

类型

解决方案

总体来讲需要对HTML、Attribute、js context、URL、style context、JSON分别进行编码处理。

【XSS】利用 onload 事件监控跨站资源

【XSS】 前端防火墙 —— 内联事件拦截

【XSS】 前端防火墙 —— 可疑模块拦截

【XSS】 前端防火墙 —— 无懈可击的钩子

【XSS】 前端防火墙 —— 天衣无缝的防护

【XSS】 前端防火墙 —— 整装待发

上述配置的详细参数请参考CSP的相关规范,csp1.0,目前csp1.1草案已经出来。 然而,csp中不允许Eval、inline js、白名单获取远程脚本,这些阻碍着csp的推广。

例如经常使用handlebars就对输出的内容进行了编码:

Handlebars HTML-escapes values returned by a . If you don’t want Handlebars to escape a value, use the “triple-stash”.

<div class="entry">
	<h1></h1>
	<div class="body">
		\{\{\{body}}}
	</div>
</div>

{
	title: "All about <p> Tags",
	body: "<p>This is a post about &lt;p&gt; tags</p>"
}

result is as below:

<div class="entry">
	<h1>All About &lt;p&gt; Tags</h1>
	<div class="body">
		<p>This is a post about &lt;p&gt; tags</p>
	</div>
</div>

参考

MDN

hijacking

https://cure53.de/fp170.pdf

freebuf1

freebuf2

knownsec.pdf