LaravelµÄCSRF±£»¤»úÖÆÊÇÔõÑùʵÏÖµÄ
laravelÊÇÒ»¸ö»ùÓÚphpÓïÑԵĿªÔ´webÓ¦ÓóÌÐò¿ò¼Ü£¬ÆÕ±éÓ¦ÓÃÓÚweb¿ª·¢ÖС£ÔÚweb¿ª·¢ÖУ¬Çå¾²ÐÔÒ»Ö±ÊÇÒ»¸öÖ÷ÒªµÄ»°Ìâ¡£ÆäÖУ¬csrf¹¥»÷Êǵ±½ñ»¥ÁªÍøÓ¦ÓÃÖÐÆձ鱣´æµÄÒ»ÖÖÇå¾²Îó²î¡£Òò´Ë£¬laravelÌṩÁËÒ»ÖÖ×Ô´øµÄcsrf±£»¤»úÖÆ£¬ÒÔ±£»¤webÓ¦ÓÃÃâÊÜcsrf¹¥»÷µÄÓ°Ïì¡£
CSRF¹¥»÷£¨Cross-site request forgery£©ÊÇÒ»ÖÖÊܺ¦ÕßÔÚ²»ÖªÇéµÄÇéÐÎϱ»¹¥»÷ÕßÆÈʹ·¢ËÍ·ÇÒâÔ¸µÄÇëÇ󣬹¥»÷Õßͨ³£»áʹÓÃÓû§ÔÚÒѵǼµÄÇéÐÎÏÂä¯ÀÀÆäËûÍøÕ¾µÄÏ°¹ß£¬ÔÚä¯ÀÀÆ÷·¢ËÍÇëÇóʱ¼ÓÈëÎÞ·¨²ì¾õµÄ¶ñÒâ´«²Î¡£ÈôÊÇÀֳɹ¥»÷£¬»áµ¼ÖÂÊܺ¦ÕßµÄÕ˺š¢ÃÜÂë¡¢Ãô¸ÐÐÅÏ¢»ò×ʽðµÈÐÅÏ¢±»ÍµÇÔ¡£Òò´Ë£¬±ÜÃâCSRF¹¥»÷ÊÇWeb¿ª·¢µÄÐëҪҪ˼Á¿µÄÇå¾²ÐÔÎÊÌâÖ®Ò»¡£
LaravelµÄCSRF±£»¤»úÖÆÊÇÔõÑùʵÏÖµÄÄØ£¿
Laravel½ÓÄÉÁËË«ÖØ°ü¹ÜµÄ·½·¨À´Ìá·ÀCSRF¹¥»÷£¬Ò»ÊÇͨ¹ýÔÚÇëÇóÖÐÌí¼ÓÒ»¸ö_csrf_tokenÖµ£¬¶þÊÇͨ¹ýÉèÖÃHttpOnlyÊôÐԵĻỰcookieÖµ¡£
Ê×ÏÈ£¬Laravel»áÔÚÿ¸ö·µ»Ø¸øÓû§µÄ±íµ¥£¨form£©¼°Ìá½»µÄPOST¡¢PUT¡¢DELETEµÈÇëÇóÖÐ×Ô¶¯Ìí¼ÓÒ»¸ö_csrf_tokenÖµ¡£¸ÃÖµÓÐÓõØ×èÖ¹ÁËCSRF¹¥»÷Õß·¢ËÍÎÞÒâÒåÇëÇóµÄ·½·¨£¬Ö»ÓÐÌá½»ÁË¸Ã±íµ¥µÄÒ³Ã棨»òÕßÔÚ¸ÃÒ³ÃæŲÓÃÉí·ÝÑéÖ¤µÄAPI£©²Å»ª¹»×¼È·µÄ´¦Öóͷ£ÇëÇ󣬶øCSRF¹¥»÷ÕßÊÇƾ֤¹ýʧµÄtokenÖµÔ¶³Ì¹¥»÷£¬Òò´ËÎÞ·¨ÊµÏÖ¹¥»÷¡£Òò´Ë£¬ÔÚ±íµ¥ÖÐÌí¼Ócsrf_token°ü¹ÜÁËÖ»ÓгÖÓÐÖ¸¶¨tokenµÄÓû§²Å»ª¹»Ìá½»ÇëÇó£¬ÔöÌíÁËϵͳµÄÇå¾²ÐÔ¡£
Æä´Î£¬Laravel»áÔÚÿ¸ö·¢Ë͸øÓû§µÄÏìÓ¦£¨Response£©ÖÐÌí¼ÓÒ»¸ö¼ÓÃܹýµÄcookieÖµ£¬Ê¹ÆäÃâÓÚ±»¸Ä¶¯¡£¸ÃcookieÖµ±»±ê¼ÇΪHttpOnlyÊôÐÔ£¬ÕâÒâζ¸ÃcookieÖµÖ»ÄÜÔÚ¿Í»§¶Ë·¢ËÍÇëÇóʱ×Ô¶¯·¢ËÍ£¬²¢ÇÒ²»¿É¹»±»JavaScript´úÂë¶ÁÈ¡¡¢Ð޸ģ¬ÔöÌíÁËcookieµÄÇå¾²ÐÔ¡£¿Í»§¶Ëä¯ÀÀÆ÷»á×Ô¶¯½«¸ÃcookieÖµÌí¼Óµ½Ã¿¸ö·¢Ë͵ÄÇëÇóÍ·ÖУ¬ÔÚЧÀͶËÎüÊÕÇëÇóʱ£¬ÈôÊÇÇëÇóÍ·ÖеÄtokenÖµÓëЧÀͶËÄÚ´æÖеÄÖµÒ»Ö£¬ÄÇô¾Í¿ÉÒÔÅжϸÃÇëÇóÊÇÕýµ±µÄ£¬²»È»¾Ü¾ø¸ÃÇëÇó¡£
×ܽá
LaravelµÄCSRF±£»¤»úÖÆÌṩÁËÒ»ÖÖ¼òÆÓ¶øÓÐÓõķ½·¨À´±£»¤WebÓ¦ÓÃÃâÊÜCSRF¹¥»÷µÄÓ°Ï졣ͨ¹ýÔÚÇëÇóÖÐÌí¼ÓÒ»¸ö_csrf_tokenÖµ¡¢ÒÔ¼°ÔÚÿ¸ö·¢Ë͸øÓû§µÄÏìÓ¦ÖÐÌí¼ÓÒ»¸ö¼ÓÃܹýµÄcookieÖµ£¬ÓÐÓõرÜÃâÁËCSRF¹¥»÷¡£
ͬʱ£¬Laravel»¹ÌṩÁËcsrf_token()º¯Êý£¬¿ÉÒÔÀû±ãµØÔÚÐèҪʱÌìÉú_tokenÖµ¡£Ê¹Óøú¯ÊýÀ´ÊÊÍâµØ¼ì²éÿ¸öÇëÇóÒÔÈ·±£ÆäÕýµ±ÊǺÜÊÇÖ÷ÒªµÄ£¬ÓÈÆäÊǹØÓÚÐèÒª¿ª·Å¶ÔÍâAPIµÄÓ¦ÓóÌÐò¡£
ÔÚʹÓÃLaravel¿ª·¢WebÓ¦ÓóÌÐòʱ£¬Ó¦¸ÃʼÖÕ˼Á¿Ó¦ÓóÌÐòµÄÇå¾²ÐÔ£¬½ÓÄÉÊʵ±µÄ²½·¥À´±£»¤ÆäÃâÊÜÖÖÖÖ¹¥»÷µÄÓ°Ïì¡£Ö»Óаü¹ÜÓ¦ÓóÌÐòµÄÇå¾²ÐÔ£¬²Å»ª¹»°ü¹ÜÓû§µÄÐÅÏ¢ºÍ×ʽðÇå¾²¡£
ÒÔÉϾÍÊÇLaravelµÄCSRF±£»¤»úÖÆÊÇÔõÑùʵÏֵĵÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡