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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Ïê½âWEB¹¥»÷Ö®CSRF¹¥»÷Óë·À»¤
 
  2272  次浏览      28
2020-12-14
 
±à¼­ÍƼö:
ÕâÆªÎÄÕÂÖ÷Òª½éÉÜÁËÏê½âWEB¹¥»÷Ö®CSRF¹¥»÷Óë·À»¤£¬´ÓCSRF ±³¾°Óë½éÉÜ,²¢·ÖÏíÁËCSRF ¹¥»÷ʵÀý,CSRF ¹¥»÷µÄ¶ÔÏóµ±Ç°·ÀÓù CSRF µÄ¼¸ÖÖ²ßÂÔ,Ò²¸ø´ó¼Ò×ö¸ö²Î¿¼¡£
±¾ÎÄÀ´×ÔÓڽű¾Ö®¼Ò£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

CSRF ±³¾°Óë½éÉÜ

CSRF¶¨Ò壺 ¿çÕ¾ÇëÇóαÔ죨ӢÓCross-site request forgery£©£¬Ò²±»³ÆÎª one-click attack »òÕß session riding£¬Í¨³£ËõдΪ CSRF »òÕß XSRF£¬ ÊÇÒ»ÖÖÐ®ÖÆÓû§ÔÚµ±Ç°ÒѵǼµÄWebÓ¦ÓóÌÐòÉÏÖ´ÐзDZ¾ÒâµÄ²Ù×÷µÄ¹¥»÷·½·¨¡£

¼òµ¥µØËµ£¬Êǹ¥»÷Õßͨ¹ýһЩ¼¼ÊõÊÖ¶ÎÆÛÆ­Óû§µÄä¯ÀÀÆ÷È¥·ÃÎÊÒ»¸ö×Ô¼ºÔø¾­ÈÏÖ¤¹ýµÄÍøÕ¾²¢Ö´ÐÐһЩ²Ù×÷£¨Èç·¢Óʼþ£¬·¢ÏûÏ¢£¬ÉõÖÁ²Æ²ú²Ù×÷ÈçתÕ˺͹ºÂòÉÌÆ·£©¡£ÓÉÓÚä¯ÀÀÆ÷Ôø¾­ÈÏÖ¤¹ý£¬ËùÒÔ±»·ÃÎʵÄÍøÕ¾»áÈÏΪÊÇÕæÕýµÄÓû§²Ù×÷¶øÈ¥Ö´ÐС£ÕâÀûÓÃÁËwebÖÐÓû§Éí·ÝÑéÖ¤µÄÒ»¸ö©¶´£º¼òµ¥µÄÉí·ÝÑéÖ¤Ö»Äܱ£Ö¤ÇëÇó·¢×Ôij¸öÓû§µÄä¯ÀÀÆ÷£¬È´²»Äܱ£Ö¤ÇëÇó±¾ÉíÊÇÓû§×ÔÔ¸·¢³öµÄ¡£

CSRFµØÎ»£ºÊÇÒ»ÖÖÍøÂç¹¥»÷·½Ê½£¬ÊÇ»¥ÁªÍøÖØ´ó°²È«Òþ»¼Ö®Ò»£¬NYTimes.com£¨Å¦Ô¼Ê±±¨£©¡¢Metafilter£¬YouTube¡¢GmailºÍ°Ù¶ÈHI¶¼Êܵ½¹ý´ËÀ๥»÷¡£

¶Ô±ÈXSS£º¸ú¿çÍøÕ¾½Å±¾£¨XSS£©Ïà±È£¬XSS ÀûÓõÄÊÇÓû§¶ÔÖ¸¶¨ÍøÕ¾µÄÐÅÈΣ¬CSRF ÀûÓõÄÊÇÍøÕ¾¶ÔÓû§ÍøÒ³ä¯ÀÀÆ÷µÄÐÅÈΡ£

CSRF ¹¥»÷ʵÀý

daguanren£¨´ó¹ÙÈË£©ÔÚÒøÐÐÓÐÒ»±Ê´æ¿î£¬ÊäÈëÓû§ÃûÃÜÂëµÇÂ¼ÒøÐÐÍøÒøºó·¢ËÍÇëÇó½øÐиöÈËÃûÏÂÕË»§×ªÕË £º

http://www.bank.example/withdraw?account=daguanren1&amount=999&for=daguanren2

½«daguanren1ÖеÄ999¿éתµ½ÁËdaguanren2Õ˺ÅÖС£Í¨³£Óû§µÇ¼ºó£¬ÏµÍ³»á±£´æÓû§µÇ¼µÄsessionÖµ£¨¿ÉÄÜÊÇÓû§ÊÖ»úºÅ¡¢Õ˺ŵȣ©¡£µ«Èç¹ûÕâʱdaguanren²»Ð¡ÐÄпªÒ»¸ötabÒ³Ãæ½øÈëÁËÒ»¸öºÚ¿Íjinlian£¨½ðÁ«£©µÄÍøÕ¾£¬¶ø½ðÁ«ÍøÕ¾µÄÒ³ÃæÖÐǶÓÐÈçÏÂhtml±êÇ©£º

<!DOCTYPE html>
<html>
<!--ÆäËûÒ³ÃæÔªËØ-->

<img src=http://www.bank.example/withdraw?account=daguanren1&amount=888&for=jinlian width='0' height='0'>

<!--ÆäËûÒ³ÃæÔªËØ-->
</html>

Õâ¸öÇëÇó¾Í»á¸½´øÉÏdaguanrenµÄsessionÖµ£¬³É¹¦½«´ó¹ÙÈ˵Ä888ԪתÖÁjinlianµÄÕË»§ÉÏ¡£µ«Èç¹ûdaguanren֮ǰûÓеÇÂ¼ÍøÒø£¬¶øÊÇÖ±½Ó´ò¿ªjinlianµÄÍøÕ¾£¬ÔòÓÉÓÚûÓÐsessionÖµ£¬²»»á±»¹¥»÷¡£ÒÔÉÏʾÀýËäÈ»ÊÇgetÇëÇó£¬postÇëÇóÌá½»µÄ±íµ¥Í¬Ñù»á±»¹¥»÷¡£

<iframe style="display:none" name="csrf-frame"></iframe>
<form method='POST' action='http://www.bank.example/withdraw' target="csrf-frame" id="csrf-form">
<input type='hidden' name='account' value='daguanren1'>
<input type='hidden' name='amount' value='888'>
<input type='hidden' name='for' value='jinlian'>
<input type='submit' value='submit'>
</form>
<script>document.getElementById("csrf-form").submit()</script>

 

ËùÒÔÒª±»CSRF¹¥»÷£¬±ØÐëͬʱÂú×ãÁ½¸öÌõ¼þ£º

1.µÇ¼ÊÜÐÅÈÎÍøÕ¾A£¬²¢ÔÚ±¾µØÉú³ÉCookie¡£

2.ÔÚ²»µÇ³öAµÄÇé¿öÏ£¬·ÃÎÊΣÏÕÍøÕ¾B¡£

CSRF ¹¥»÷µÄ¶ÔÏó

ÔÚÌÖÂÛÈçºÎµÖÓù CSRF ֮ǰ£¬ÏÈÒªÃ÷È· CSRF ¹¥»÷µÄ¶ÔÏó£¬Ò²¾ÍÊÇÒª±£»¤µÄ¶ÔÏó¡£´ÓÒÔÉϵÄÀý×Ó¿ÉÖª£¬CSRF ¹¥»÷ÊǺڿͽèÖúÊܺ¦ÕßµÄ cookie£¨session£© Æ­È¡·þÎñÆ÷µÄÐÅÈΣ¬µ«ÊǺڿͲ¢²»ÄÜÄõ½ cookie£¬Ò²¿´²»µ½ cookie µÄÄÚÈÝ¡£ÁíÍ⣬¶ÔÓÚ·þÎñÆ÷·µ»ØµÄ½á¹û£¬ÓÉÓÚä¯ÀÀÆ÷ͬԴ²ßÂÔµÄÏÞÖÆ£¬ºÚ¿ÍÒ²ÎÞ·¨½øÐнâÎö¡£Òò´Ë£¬ºÚ¿ÍÎÞ·¨´Ó·µ»ØµÄ½á¹ûÖеõ½Èκζ«Î÷£¬ËûËùÄÜ×öµÄ¾ÍÊǸø·þÎñÆ÷·¢ËÍÇëÇó£¬ÒÔÖ´ÐÐÇëÇóÖÐËùÃèÊöµÄÃüÁÔÚ·þÎñÆ÷¶ËÖ±½Ó¸Ä±äÊý¾ÝµÄÖµ£¬¶ø·ÇÇÔÈ¡·þÎñÆ÷ÖеÄÊý¾Ý¡£ËùÒÔ£¬ÎÒÃÇÒª±£»¤µÄ¶ÔÏóÊÇÄÇЩ¿ÉÒÔÖ±½Ó²úÉúÊý¾Ý¸Ä±äµÄ·þÎñ£¬¶ø¶ÔÓÚ¶ÁÈ¡Êý¾ÝµÄ·þÎñ£¬Ôò²»ÐèÒª½øÐÐ CSRF µÄ±£»¤¡£±ÈÈçÒøÐÐϵͳÖÐתÕ˵ÄÇëÇó»áÖ±½Ó¸Ä±äÕË»§µÄ½ð¶î£¬»áÔâµ½ CSRF ¹¥»÷£¬ÐèÒª±£»¤¡£¶ø²éѯÓà¶îÊǶԽð¶îµÄ¶ÁÈ¡²Ù×÷£¬²»»á¸Ä±äÊý¾Ý£¬CSRF ¹¥»÷ÎÞ·¨½âÎö·þÎñÆ÷·µ»ØµÄ½á¹û£¬ÎÞÐè±£»¤¡£

¹Ê£ºÔöɾ¸ÄÐèÒª·À·¶CSRF¹¥»÷£¬¶ø¶ÁÎÞÐè·À·¶¡£

µ±Ç°·ÀÓù CSRF µÄ¼¸ÖÖ²ßÂÔ

ÔÚÒµ½çĿǰ·ÀÓù CSRF ¹¥»÷Ö÷ÒªÓÐËÄÖÖ²ßÂÔ£º

- ÑéÖ¤ HTTP Referer ×ֶΣ»

- ÔÚÇëÇóµØÖ·ÖÐÌí¼Ó token ²¢ÑéÖ¤£»

- ÔÚ HTTP Í·ÖÐ×Ô¶¨ÒåÊôÐÔ²¢ÑéÖ¤£»

- Chromeä¯ÀÀÆ÷¶ËÆôÓÃSameSite cookie

1¡¢ÑéÖ¤ HTTP Referer ×Ö¶Î

ʲôÊÇHTTP Referer£¿ÏÂÃæGIFͼÊÇÓɰٶÈÌø×ªµ½QQÓÊÏäÒ³ÃæµÄReferer²é¿´Ê¾Ò⣺

¿ÉÒÔ¿´³öRefererΪReferer£ºhttps://www.baidu.com/

¸ù¾Ý HTTP ЭÒ飬ÔÚ HTTP Í·£¨request µÄ header£©ÖÐÓÐÒ»¸ö×ֶνРReferer£¬Ëü¼Ç¼Á˸à HTTP ÇëÇóµÄÀ´Ô´µØÖ·¡£Èç¹ûºÚ¿ÍÒª¶ÔÒøÐÐÍøÕ¾ÊµÊ© CSRF ¹¥»÷£¬µ±Óû§Í¨¹ýºÚ¿ÍµÄÍøÕ¾·¢ËÍÇëÇóµ½ÒøÐÐʱ£¬¸ÃÇëÇóµÄ Referer ÖµÊÇÖ¸ÏòºÚ¿ÍµÄÍøÕ¾¶ø²»ÊÇÓû§µÄÍøÕ¾¡£Òò´Ë£¬Òª·ÀÓù CSRF ¹¥»÷£¬ÒøÐÐÍøÕ¾Ö»ÐèÒª¶ÔÓÚÿһ¸öתÕËÇëÇóÑéÖ¤Æä Referer Öµ£¬Èç¹ûÊÇÒÔ www.bank.example¿ªÍ·µÄÓòÃû£¬Ôò˵Ã÷¸ÃÇëÇóÊÇÀ´×ÔÒøÐÐÍøÕ¾×Ô¼ºµÄÇëÇó£¬ÊǺϷ¨µÄ¡£Èç¹û Referer ÊÇÆäËûÍøÕ¾µÄ»°£¬ÔòÓпÉÄÜÊÇºÚ¿ÍµÄ CSRF ¹¥»÷£¬¾Ü¾ø¸ÃÇëÇó¡£

ÕâÖÖ·½·¨µÄÏÔ¶øÒ×¼ûµÄºÃ´¦¾ÍÊǼòµ¥Ò×ÐУ¬ÍøÕ¾µÄÆÕͨ¿ª·¢ÈËÔ±²»ÐèÒª²ÙÐÄ CSRF µÄ©¶´£¬Ö»ÐèÒªÔÚ×îºó¸øËùÓа²È«Ãô¸ÐµÄÇëÇóͳһÔö¼ÓÒ»¸öÀ¹½ØÆ÷À´¼ì²é Referer µÄÖµ¾Í¿ÉÒÔ¡£ÌرðÊǶÔÓÚµ±Ç°ÏÖÓеÄϵͳ£¬²»ÐèÒª¸Ä±äµ±Ç°ÏµÍ³µÄÈκÎÒÑÓдúÂëºÍÂß¼­¡£

È»¶ø£¬ÕâÖÖ·½·¨²¢·ÇÍòÎÞһʧ¡£Referer µÄÖµÊÇÓÉä¯ÀÀÆ÷ÌṩµÄ£¬ËäÈ» HTTP ЭÒéÉÏÓÐÃ÷È·µÄÒªÇ󣬵«ÊÇÿ¸öä¯ÀÀÆ÷¶ÔÓÚ Referer µÄ¾ßÌåʵÏÖ¿ÉÄÜÓвî±ð£¬²¢²»Äܱ£Ö¤ä¯ÀÀÆ÷×ÔÉíûÓа²È«Â©¶´¡£Ê¹ÓÃÑéÖ¤ Referer ÖµµÄ·½·¨£¬¾ÍÊǰѰ²È«ÐÔ¶¼ÒÀÀµÓÚµÚÈý·½£¨¼´ä¯ÀÀÆ÷£©À´±£ÕÏ£¬´ÓÀíÂÛÉÏÀ´½²£¬ÕâÑù²¢²»°²È«¡£ÊÂʵÉÏ£¬¶ÔÓÚijЩä¯ÀÀÆ÷£¬±ÈÈç IE6 »ò FF2£¬Ä¿Ç°ÒѾ­ÓÐһЩ·½·¨¿ÉÒÔ´Û¸Ä Referer Öµ¡£Èç¹û www.bank.exampleÍøÕ¾Ö§³Ö IE6 ä¯ÀÀÆ÷£¬ºÚ¿ÍÍêÈ«¿ÉÒÔ°ÑÓû§ä¯ÀÀÆ÷µÄ Referer ÖµÉèΪÒÔ www.bank.exampleÓòÃû¿ªÍ·µÄµØÖ·£¬ÕâÑù¾Í¿ÉÒÔͨ¹ýÑéÖ¤£¬´Ó¶ø½øÐÐ CSRF ¹¥»÷¡£

¼´±ãÊÇʹÓÃ×îеÄä¯ÀÀÆ÷£¬ºÚ¿ÍÎÞ·¨´Û¸Ä Referer Öµ£¬ÕâÖÖ·½·¨ÈÔÈ»ÓÐÎÊÌâ¡£ÒòΪ Referer Öµ»á¼Ç¼ÏÂÓû§µÄ·ÃÎÊÀ´Ô´£¬ÓÐЩÓû§ÈÏΪÕâÑù»áÇÖ·¸µ½ËûÃÇ×Ô¼ºµÄÒþ˽Ȩ£¬ÌرðÊÇÓÐЩ×éÖ¯µ£ÐÄ Referer Öµ»á°Ñ×éÖ¯ÄÚÍøÖеÄijЩÐÅϢй¶µ½ÍâÍøÖС£Òò´Ë£¬Óû§×Ô¼º¿ÉÒÔÉèÖÃä¯ÀÀÆ÷ʹÆäÔÚ·¢ËÍÇëÇóʱ²»ÔÙÌṩ Referer¡£µ±ËûÃÇÕý³£·ÃÎÊÒøÐÐÍøÕ¾Ê±£¬ÍøÕ¾»áÒòΪÇëÇóûÓÐ Referer Öµ¶øÈÏΪÊÇ CSRF ¹¥»÷£¬¾Ü¾øºÏ·¨Óû§µÄ·ÃÎÊ¡£

ÁíÍ⣬Èç¹ûRefererµÄÅжÏÂß¼­Ð´µÄ²»ÑÏÃܵϰ£¬Ò²ÈÝÒ×±»¹¥ÆÆ£¬ÀýÈç

const referer = request.headers.referer;
if (referer.indexOf('www.bank.example') > -1) {
// pass
}

Èç¹ûºÚ¿ÍµÄÍøÕ¾ÊÇwww.bank.example.hack.com£¬Ôòreferer¼ì²éÎÞЧ¡£

2¡¢ÔÚÇëÇóµØÖ·ÖÐÌí¼Ó token ²¢ÑéÖ¤

CSRF ¹¥»÷Ö®ËùÒÔÄܹ»³É¹¦£¬ÊÇÒòΪºÚ¿Í¿ÉÒÔÍêȫαÔìÓû§µÄÇëÇ󣬸ÃÇëÇóÖÐËùÓеÄÓû§ÑéÖ¤ÐÅÏ¢¶¼ÊÇ´æÔÚÓÚ cookie ÖУ¬Òò´ËºÚ¿Í¿ÉÒÔÔÚ²»ÖªµÀÕâЩÑéÖ¤ÐÅÏ¢µÄÇé¿öÏÂÖ±½ÓÀûÓÃÓû§µÄ cookie À´Í¨¹ý°²È«ÑéÖ¤¡£ÒªµÖÓù CSRF£¬¹Ø¼üÔÚÓÚÔÚÇëÇóÖзÅÈëºÚ¿ÍËù²»ÄÜαÔìµÄÐÅÏ¢£¬²¢ÇÒ¸ÃÐÅÏ¢²»´æÔÚÓÚ cookie Ö®ÖС£¿ÉÒÔÔÚ HTTP ÇëÇóÖÐÒÔ²ÎÊýµÄÐÎʽ¼ÓÈëÒ»¸öËæ»ú²úÉúµÄ token£¬²¢ÔÚ·þÎñÆ÷¶Ë½¨Á¢Ò»¸öÀ¹½ØÆ÷À´ÑéÖ¤Õâ¸ö token£¬Èç¹ûÇëÇóÖÐûÓÐ token »òÕß token ÄÚÈݲ»ÕýÈ·£¬ÔòÈÏΪ¿ÉÄÜÊÇ CSRF ¹¥»÷¶ø¾Ü¾ø¸ÃÇëÇó¡£

ÕâÖÖ·½·¨Òª±È¼ì²é Referer Òª°²È«Ò»Ð©£¬token ¿ÉÒÔÔÚÓû§µÇ½ºó²úÉú²¢·ÅÓÚ session Ö®ÖУ¬È»ºóÔÚÿ´ÎÇëÇóʱ°Ñ token ´Ó session ÖÐÄóö£¬ÓëÇëÇóÖÐµÄ token ½øÐбȶԣ¬µ«ÕâÖÖ·½·¨µÄÄѵãÔÚÓÚÈçºÎ°Ñ token ÒÔ²ÎÊýµÄÐÎʽ¼ÓÈëÇëÇó¡£¶ÔÓÚ GET ÇëÇó£¬token ½«¸½ÔÚÇëÇóµØÖ·Ö®ºó£¬ÕâÑù URL ¾Í±ä³É

http://url?csrftoken=tokenvalue

¶ø¶ÔÓÚ POST ÇëÇóÀ´Ëµ£¬ÒªÔÚ form µÄ×îºó¼ÓÉÏ

<input type="hidden" name="csrftoken" value="tokenvalue"/>

¸Ã·½·¨ÓÐÒ»¸öȱµãÊÇÄÑÒÔ±£Ö¤ token ±¾ÉíµÄ°²È«¡£ÌرðÊÇÔÚһЩÂÛ̳֮ÀàÖ§³ÖÓû§×Ô¼º·¢±íÄÚÈݵÄÍøÕ¾£¬ºÚ¿Í¿ÉÒÔÔÚÉÏÃæ·¢²¼×Ô¼º¸öÈËÍøÕ¾µÄµØÖ·¡£ÓÉÓÚϵͳҲ»áÔÚÕâ¸öµØÖ·ºóÃæ¼ÓÉÏ token£¬ºÚ¿Í¿ÉÒÔÔÚ×Ô¼ºµÄÍøÕ¾Éϵõ½Õâ¸ö token£¬²¢ÂíÉϾͿÉÒÔ·¢¶¯ CSRF ¹¥»÷¡£ÎªÁ˱ÜÃâÕâÒ»µã£¬ÏµÍ³¿ÉÒÔÔÚÌí¼Ó token µÄʱºòÔö¼ÓÒ»¸öÅжϣ¬Èç¹ûÕâ¸öÁ´½ÓÊÇÁ´µ½×Ô¼º±¾Õ¾µÄ£¬¾ÍÔÚºóÃæÌí¼Ó token£¬Èç¹ûÊÇͨÏòÍâÍøÔò²»¼Ó¡£²»¹ý£¬¼´Ê¹Õâ¸ö csrftoken ²»ÒÔ²ÎÊýµÄÐÎʽ¸½¼ÓÔÚÇëÇóÖ®ÖУ¬ºÚ¿ÍµÄÍøÕ¾Ò²Í¬Ñù¿ÉÒÔͨ¹ý Referer À´µÃµ½Õâ¸ö token ÖµÒÔ·¢¶¯ CSRF ¹¥»÷¡£ÕâÒ²ÊÇһЩÓû§Ï²»¶ÊÖ¶¯¹Ø±Õä¯ÀÀÆ÷ Referer ¹¦ÄܵÄÔ­Òò¡£

3¡¢ÔÚ HTTP Í·ÖÐ×Ô¶¨ÒåÊôÐÔ²¢ÑéÖ¤

ÕâÖÖ·½·¨Ò²ÊÇʹÓà token ²¢½øÐÐÑéÖ¤£¬ºÍÉÏÒ»ÖÖ·½·¨²»Í¬µÄÊÇ£¬ÕâÀï²¢²»ÊÇ°Ñ token ÒÔ²ÎÊýµÄÐÎʽÖÃÓÚ HTTP ÇëÇóÖ®ÖУ¬¶øÊǰÑËü·Åµ½ HTTP Í·ÖÐ×Ô¶¨ÒåµÄÊôÐÔÀͨ¹ý XMLHttpRequest Õâ¸öÀ࣬¿ÉÒÔÒ»´ÎÐÔ¸øËùÓиÃÀàÇëÇó¼ÓÉÏ csrftoken Õâ¸ö HTTP Í·ÊôÐÔ£¬²¢°Ñ token Öµ·ÅÈëÆäÖС£ÕâÑù½â¾öÁËÉÏÖÖ·½·¨ÔÚÇëÇóÖмÓÈë token µÄ²»±ã£¬Í¬Ê±£¬Í¨¹ý XMLHttpRequest ÇëÇóµÄµØÖ·²»»á±»¼Ç¼µ½ä¯ÀÀÆ÷µÄµØÖ·À¸£¬Ò²²»Óõ£ÐÄ token »á͸¹ý Referer й¶µ½ÆäËûÍøÕ¾ÖÐÈ¥¡£

È»¶øÕâÖÖ·½·¨µÄ¾ÖÏÞÐԷdz£´ó¡£XMLHttpRequest ÇëÇóͨ³£ÓÃÓÚ Ajax ·½·¨ÖжÔÓÚÒ³Ãæ¾Ö²¿µÄÒ첽ˢУ¬²¢·ÇËùÓеÄÇëÇó¶¼ÊʺÏÓÃÕâ¸öÀàÀ´·¢Æð£¬¶øÇÒͨ¹ý¸ÃÀàÇëÇóµÃµ½µÄÒ³Ãæ²»Äܱ»ä¯ÀÀÆ÷Ëù¼Ç¼Ï£¬´Ó¶ø½øÐÐǰ½ø£¬ºóÍË£¬Ë¢Ð£¬ÊղصȲÙ×÷£¬¸øÓû§´øÀ´²»±ã¡£ÁíÍ⣬¶ÔÓÚûÓнøÐÐ CSRF ·À»¤µÄÒÅÁôϵͳÀ´Ëµ£¬Òª²ÉÓÃÕâÖÖ·½·¨À´½øÐзÀ»¤£¬Òª°ÑËùÓÐÇëÇ󶼸ÄΪ XMLHttpRequest ÇëÇó£¬ÕâÑù¼¸ºõÊÇÒªÖØÐ´Õû¸öÍøÕ¾£¬Õâ´ú¼ÛÎÞÒÉÊDz»ÄܽÓÊܵġ£

4¡¢Chromeä¯ÀÀÆ÷¶ËÆôÓÃSameSite cookie

ÏÂÃæ½éÉÜÈçºÎÆôÓÃSameSite cookieµÄÉèÖ㬺ܼòµ¥¡£

Ô­±¾µÄ Cookie µÄ header ÉèÖÃÊdz¤ÕâÑù£º

Set-Cookie: session_id=esadfas325

ÐèÒªÔÚβ²¿Ôö¼Ó SameSite ¾ÍºÃ£º

Set-Cookie: session_id=esdfas32e5; SameSite

SameSite ÓÐÁ½ÖÖģʽ£¬Lax¸úStrictģʽ£¬Ä¬ÈÏÆôÓÃStrictģʽ£¬¿ÉÒÔ×Ô¼ºÖ¸¶¨Ä£Ê½£º

Set-Cookie: session_id=esdfas32e5; SameSite=StrictSet-Cookie: foo=bar; SameSite=Lax

Strictģʽ¹æ¶¨ cookie Ö»ÔÊÐíÏàͬµÄsiteʹÓ㬲»Ó¦¸ÃÔÚÈÎºÎµÄ cross site request ±»¼ÓÉÏÈ¥¡£¼´a±êÇ©¡¢form±íµ¥ºÍXMLHttpRequestÌá½»µÄÄÚÈÝ£¬Ö»ÒªÊÇÌá½»µ½²»Í¬µÄsiteÈ¥£¬¾Í²»»á´øÉÏcookie¡£

µ«Ò²´æÔÚ²»±ã£¬ÀýÈçÅóÓÑ·¢Ë͹ýÀ´ÎÒÒѾ­µÇ½¹ýµÄÒ»¸öÒ³ÃæÁ´½Ó£¬Îҵ㿪ºó£¬¸ÃÒ³ÃæÈÔÈ»ÐèÒªÖØÐµÇ¼¡£

ÓÐÁ½ÖÖ´¦Àí°ì·¨£¬µÚÒ»ÖÖÊÇÓëAmazonÒ»Ñù£¬×¼±¸Á½×鲻ͬµÄcookie£¬µÚÒ»×éÓÃÓÚά³ÖµÇ¼״̬²»É趨SameSite£¬µÚ¶þ×éÕë¶ÔµÄÊÇһЩÃô¸Ð²Ù×÷»áÓõ½£¨ÀýÈ繺Âò¡¢Ö§¸¶¡¢É趨ÕË»§µÈ£©ÑϸñÉ趨SameSite¡£

»ùÓÚÕâ¸ö˼·£¬¾Í²úÉúÁË SameSite µÄÁíÒ»Ò»ÖÖģʽ£ºLaxģʽ¡£

Lax ģʽ´ò¿ªÁËһЩÏÞÖÆ£¬ÀýÈç

<a>
<link rel="prerender">
<form method="GET">

ÕâЩ¶¼»á´øÉÏcookie¡£µ«ÊÇ POST ·½·¨ µÄ form£¬»òÊÇÖ»ÒªÊÇ POST, PUT, DELETE ÕâЩ·½·¨£¬¾Í²»»á´øcookie¡£

µ«Ò»¶¨×¢Òâ½«ÖØÒªµÄÇëÇó·½Ê½¸Ä³ÉPOST£¬·ñÔòGETÈÔÈ»»á±»¹¥»÷¡£

PS£º¸Ã·½Ê½Ä¿Ç°½öChromeÖ§³Ö¡£

ºó¼Ç

·½Ê½1ͨ¹ýÑéÖ¤HTTP RefererÍ·ÐÅÏ¢À´·ÀÖ¹¿çÕ¾ÇëÇóαÔìcsrf£¬ÔÚjavaÖпÉÒÔͨ¹ýfilterÀ´ÊµÏÖ¡£·½Ê½2ºÍ·½Ê½3¶¼ÊÇͨ¹ýÔÚÇëÇóÖÐÌí¼ÓtokenÀ´½øÐа²È«Ð£ÑéµÄ£¬spring security ÌṩµÄcsrf·À»¤¾ÍÊDzÉÓÃÕâÑùµÄ·½Ê½£¬¶øÇÒ´Óspring security 4.0¿ªÊ¼csrf·À»¤ÊÇĬÈÏ¿ªÆôµÄ¡£¶ÔÓÚÒ»¸öÐÂÏîÄ¿£¬¿ÉÒÔ¼¸ÖÖ·½Ê½¶¼ÓÃÉÏ£¬ÕâÑù¸ü¼Ó°²È«¡£Èç¹ûÊÇÒ»¸öÒѾ­Í걸µÄweb³ÌÐò£¬»¹ÊÇʹÓ÷½Ê½1ÐÞ¸ÄÆðÀ´·½±ã£¬²»È»Ã¿¸öÇëÇó¶¼¼ÓÉÏcsrfToken¸Ä¶¯ºÜ´ó¡£

 

   
2272 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

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[±±¾©]
 
×îÐÂÎÄÕÂ
ÎïÁªÍø°²È«¸ÅÊö
Ê·ÉÏ×îÏêϸµÄÇø¿éÁ´¼¼Êõ¼Ü¹¹·ÖÎö
Ò»ÎĶÁ¶®Çø¿éÁ´ÕûÌå¼Ü¹¹¼°Ó¦Óð¸Àý
Çø¿éÁ´¼¼Êõ¼Ü¹¹
°²È«¼Ü¹¹ÆÀÉóʵս
×îпγÌ
WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ÎïÁªÍø¹Ø¼ü¼¼Êõ¡¢°²È«Óë±ßÔµ¼ÆËã
Çø¿éÁ´°²È«¼¼Êõʵ¼ùÖ¸ÄÏ
ÔÆ·þÎñÓ밲ȫ¼Ü¹¹
»¥ÁªÍø°²È«¿ª·¢·½·¨Óëʵ¼ù
³É¹¦°¸Àý
ÖйúÒøÐÐ ÐÅÏ¢°²È«¼¼Êõ¼°Éî¶È·ÀÓù
±±¾© WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ij²ÆË°ÁìÓòÖªÃûIT·þÎñÉÌ Web°²È«²âÊÔ
ÆÕÈð¿Ë˹ web°²È«Éè¼Æ¡¢²âÊÔÓëÓÅ»¯
±±¾©ºÍÀûʱ ÐÔÄܺͰ²È«ÐÔ²âÊÔ