3377ÌåÓýÍø¹ÙÍøÈë¿Ú

֤ȯ¼ò³Æ£º3377ÌåÓýÍø¹ÙÍøÈë¿Ú ֤ȯ´úÂ룺002212
7x24Сʱ·þÎñ£º 400-777-0777

¼ì²âÓë·À»¤ÄÜÁ¦¡ªÇ³ÎöJWT¹¥»÷ÀàÐÍ

JWTÈ«³ÆÎªJSON Web Token,½«json¹¤¾ß×÷ÎªÔØÌåÀ´´«ÊäÐÅÏ¢£¬£¬£¬£¬£¬£¬Ò»Ñùƽ³£±»ÓÃÔÚÉí·ÝÌṩÕߺͷþÎñÌṩÕß¼äת´ï±»ÈÏÖ¤µÄÓû§Éí·ÝÐÅÏ¢£¬£¬£¬£¬£¬£¬ÒÔ±ãÓÚ´Ó×ÊÔ´·þÎñÆ÷»ñÈ¡×ÊÔ´£¬£¬£¬£¬£¬£¬Ò²¿ÉÒÔÔöÌíÒ»Ð©ÌØÁíÍâÓªÒµÂß¼­Ëù±ØÐèÉùÃ÷ÐÅÏ¢£¬£¬£¬£¬£¬£¬¸Ãtoken¿É±»Ö±½ÓÓÃÓÚÈÏÖ¤£¬£¬£¬£¬£¬£¬Ò²¿ÉÓÃ×÷¼ÓÃÜ ¡£¡£¡£¡£ ¡£¡£

¼ì²âÓë·À»¤ÄÜÁ¦¡ªÇ³ÎöJWT¹¥»÷ÀàÐÍ

Ðû²¼Ê±¼ä£º2022-11-18
ä¯ÀÀ´ÎÊý£º5059
·ÖÏí£º

01 JWT¼ò½é

JWTÈ«³ÆÎªJSON Web Token,½«json¹¤¾ß×÷ÎªÔØÌåÀ´´«ÊäÐÅÏ¢£¬£¬£¬£¬£¬£¬Ò»Ñùƽ³£±»ÓÃÔÚÉí·ÝÌṩÕߺͷþÎñÌṩÕß¼äת´ï±»ÈÏÖ¤µÄÓû§Éí·ÝÐÅÏ¢£¬£¬£¬£¬£¬£¬ÒÔ±ãÓÚ´Ó×ÊÔ´·þÎñÆ÷»ñÈ¡×ÊÔ´£¬£¬£¬£¬£¬£¬Ò²¿ÉÒÔÔöÌíÒ»Ð©ÌØÁíÍâÓªÒµÂß¼­Ëù±ØÐèÉùÃ÷ÐÅÏ¢£¬£¬£¬£¬£¬£¬¸Ãtoken¿É±»Ö±½ÓÓÃÓÚÈÏÖ¤£¬£¬£¬£¬£¬£¬Ò²¿ÉÓÃ×÷¼ÓÃÜ ¡£¡£¡£¡£ ¡£¡£

JSON WebÁîÅÆ£¨JWT£©ÊÇÒ»ÖÖ±ê×¼»¯µÄÃûÌ㬣¬£¬£¬£¬£¬ÓÃÓÚÔÚϵͳ֮¼ä·¢Ë;­ÓɼÓÃÜÊðÃûµÄJSONÊý¾Ý ¡£¡£¡£¡£ ¡£¡£ÀíÂÛÉÏJWT¿ÉÒÔ°üÀ¨ÈκÎÀàÐ͵ÄÊý¾Ý£¬£¬£¬£¬£¬£¬µ«×î³£ÓÃÓÚ¾ÙÐÐÉí·ÝÈÏÖ¤¡¢»á»°´¦Öóͷ£ºÍ»á¼û¿ØÖÆ ¡£¡£¡£¡£ ¡£¡£Óë¹Å°åµÄ»á»°ÁîÅÆ²î±ð£¬£¬£¬£¬£¬£¬·þÎñÆ÷ÐèÒªµÄËùÓÐÊý¾Ý¶¼´æ´¢ÔÚJWT×Ô¼ºµÄ¿Í»§¶Ë ¡£¡£¡£¡£ ¡£¡£ÕâʹµÃJWT³ÉΪ¸ß¶ÈÂþÑÜÊ½ÍøÕ¾µÄÈÈÃÅÑ¡Ôñ£¬£¬£¬£¬£¬£¬ÔÚÕâÐ©ÍøÕ¾ÖУ¬£¬£¬£¬£¬£¬Óû§ÐèÒªÓë¶à¸öºó¶Ë·þÎñÆ÷¾ÙÐÐÎÞ·ì½»»¥ ¡£¡£¡£¡£ ¡£¡£

1.1 JWTÃûÌÃ

JWTÓÉ3²¿·Ö×é³É£ºÍ·²¿¡¢ÔغɺÍÊðÃû ¡£¡£¡£¡£ ¡£¡£ÕâЩ²¿·ÖÖ®¼äÓõãºÅÀë¸ô£¬£¬£¬£¬£¬£¬ÈçÏÂËùʾ£º

eyJraWQiOiI5MTM2ZGRiMy1jYjBhLTRhMTktYTA3ZS1lYWRmNWE0NGM4YjUiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJwb3J0c3dpZ2dlciIsImV4cCI6MTY0ODAzNzE2NCwibmFtZSI6IkNhcmxvcyBNb250b3lhIiwic3ViIjoiY2FybG9zIiwicm9sZSI6ImJsb2dfYXV0aG9yIiwiZW1haWwiOiJjYXJsb3NAY2FybG9zLW1vbnRveWEubmV0IiwiaWF0IjoxNTE2MjM5MDIyfQ.SYZBPIBg2CRjXAJ8vCER0LA_ENjII1JakvNQoP-Hw6GG1zfl4JyngsZReIfqRvIAEi5L4HV0q7_9qGhQZvy9ZdxEJbwTxRs_6Lb-fZTDpW6lKYNdMyjw45_alSCZ1fypsMWz_2mTpQzil0lOtps5Ei_z7mM7M8gCwe_AGpI53JxduQOaB5HkT5gVrv9cKu9CsW5MS6ZbqYXpGyOG5ehoxqm8DL5tFYaW3lB50ELxi0KsuTKEbD0t5BCl0aCR2MBJWAbN-xeLwEenaqBiwPVvKixYleeDQiBEIylFdNNIMviKRgXiYuAvMziVPbwSgkZVHeEdF5MQP1Oe2Spac-6IfA

JWTµÄÍ·²¿ºÍÔØºÉ²¿·Ö×Åʵ¾ÍÊÇÓÃbase64url±àÂëµÄJSON¹¤¾ß ¡£¡£¡£¡£ ¡£¡£ÆäÖÐÍ·²¿°üÀ¨¹ØÓÚÁîÅÆ×Ô¼ºµÄÔªÊý¾Ý£¬£¬£¬£¬£¬£¬¶øÔغɰüÀ¨¹ØÓÚÓû§µÄÏÖʵ¡°ÉùÃ÷¡± ¡£¡£¡£¡£ ¡£¡£¿£¿£¿£¿£¿£¿£¿ÉÒÔ¶ÔÉÏÊöÁîÅÆµÄÔØºÉ¾ÙÐнâÂ룬£¬£¬£¬£¬£¬Ð§¹ûÈçÏ£º

{

"iss": "portswigger",

"exp": 1648037164,

"name": "Carlos Montoya",

"sub": "carlos",

"role": "blog_author",

"email": "carlos@carlos-montoya.net",

"iat": 1516239022

}

´ó´ó¶¼ÇéÐÎÏ£¬£¬£¬£¬£¬£¬ÈκÎÓÐȨ»á¼ûÁîÅÆµÄÈ˶¼¿ÉÒÔÇáËɵضÁÈ¡»òÐÞ¸ÄÕâЩÊý¾Ý ¡£¡£¡£¡£ ¡£¡£Òò´ËÈκλùÓÚJWT»úÖÆµÄÇå¾²ÐÔ¶¼ÑÏÖØÒÀÀµÓÚÃÜÂëÊðÃû ¡£¡£¡£¡£ ¡£¡£

1.2 JWTÊðÃû

½ÒÏþÁîÅÆµÄ·þÎñÆ÷ͨ³£Í¨¹ý¶ÔÍ·²¿ºÍÔØºÉÅÌËã¹þÏ£ÖµÀ´ÌìÉúÊðÃû ¡£¡£¡£¡£ ¡£¡£ÓÐʱ»á¶Ô±¬·¢µÄ¹þÏ£Öµ¾ÙÐмÓÃÜ´¦Öóͷ£ ¡£¡£¡£¡£ ¡£¡£¿ÉÊÇÎÞÂÛÄÄÖÖ·½·¨£¬£¬£¬£¬£¬£¬Õâ¸öÀú³Ì¶¼Éæ¼°Ò»¸öÉñÒþÃØÔ¿ ¡£¡£¡£¡£ ¡£¡£ÈôÊÇÃÜԿδ֪£¬£¬£¬£¬£¬£¬¾ÍÎÞ·¨Îª¸ø¶¨µÄÍ·²¿ºÍÔØºÉÌìÉúÓÐÓõÄÊðÃû ¡£¡£¡£¡£ ¡£¡£ÕâÏÖʵÉϾÍΪ·þÎñÆ÷ÌṩÁËÒ»ÖÖÑéÖ¤ÁîÅÆ½ÒÏþÒÔÀ´Êý¾ÝÊÇ·ñ±»¸Ä¶¯µÄ»úÖÆ£¬£¬£¬£¬£¬£¬ÓÉÓÚÈκζÔÍ·²¿»òÔØºÉ²¿·ÖµÄÐ޸ͼ»áʹÊðÃû²»ÔÙÆ¥Åä ¡£¡£¡£¡£ ¡£¡£

02 JWT¡¢JWSÓëJWE

JWT¹æ·¶µÄÔ¼ÊøÏÖʵÉÏÊǺÜÊÇÓÐÏÞµÄ ¡£¡£¡£¡£ ¡£¡£ÓÉÓÚËüÖ»½ç˵Á˽«ÐÅÏ¢£¨¡°ÉùÃ÷¡±£©ÌåÏÖΪ¿ÉÒÔÔÚË«·½Ö®¼ä´«ÊäµÄJSON¹¤¾ßµÄÃûÌà ¡£¡£¡£¡£ ¡£¡£ÔÚÏÖʵʹÓÃÖУ¬£¬£¬£¬£¬£¬JWT²¢Ã»ÓÐÕæÕý×÷Ϊһ¸ö×ÔÁ¦µÄʵÌåʹÓà ¡£¡£¡£¡£ ¡£¡£JWT¹æ·¶ÓÉJSON WebÊðÃû(JWS)ºÍJSON Web¼ÓÃÜ(JWE)¹æ·¶×é³É£¬£¬£¬£¬£¬£¬ÅäºÏ½ç˵ÁËÏÖʵʵÏÖJWTµÄÏêϸҪÁì ¡£¡£¡£¡£ ¡£¡£

Ò²¾ÍÊÇ˵£¬£¬£¬£¬£¬£¬JWTͨ³£ÊÇÖ¸JWS»òJWEÁîÅÆ£¬£¬£¬£¬£¬£¬JWEͬÀí£¬£¬£¬£¬£¬£¬Ö»ÊÇÁîÅÆµÄÏÖʵÄÚÈÝÊǾ­ÓɼÓÃÜµÄ ¡£¡£¡£¡£ ¡£¡£

2.1 JWT¹¥»÷

JWT¹¥»÷ÊÇÖ¸Óû§Ïò·þÎñÆ÷·¢ËÍÐ޻ڸĵÄJWT£¬£¬£¬£¬£¬£¬Ö´ÐжñÒâ²Ù×÷ ¡£¡£¡£¡£ ¡£¡£Í¨³£ÇéÐÎÏ£¬£¬£¬£¬£¬£¬½ÏÁ¿³£¼ûµÄÊÇð³äÒѾ­Í¨¹ýÉí·ÝÈÏÖ¤µÄÓû§£¬£¬£¬£¬£¬£¬ÈƹýÈÏÖ¤ºÍ»á¼û¿ØÖÆ ¡£¡£¡£¡£ ¡£¡£ÈôÊǹ¥»÷ÕßÄܹ»ÓÃí§ÒâÖµ½¨Éè×Ô¼ºµÄÓÐÓÃÁîÅÆ£¬£¬£¬£¬£¬£¬ËûÃǾÍÄܹ»ÌáÉý×Ô¼ºµÄȨÏÞ»òð³äÆäËûÓû§£¬£¬£¬£¬£¬£¬´Ó¶øÍêÈ«½ÓÊÜÕâЩÓû§µÄÕË»§ ¡£¡£¡£¡£ ¡£¡£

2.2 ¹¥»÷Ô­Àí

JWTÎó²îͨ³£ÊÇÓÉÓÚÓ¦ÓóÌÐò×Ô¼º¶ÔJWTµÄ´¦Öóͷ£ÓÐȱÏݶø±¬·¢µÄ ¡£¡£¡£¡£ ¡£¡£ÓëJWTÓйصÄÖÖÖֹ淶ÔÚÉè¼ÆÉÏÏà¶ÔÎÞа£¬£¬£¬£¬£¬£¬ÀýÈçÔÊÐíÍøÕ¾¿ª·¢Ö°Ô±×ÔÐоöÒéÐí¶àʵÏÖϸ½Ú ¡£¡£¡£¡£ ¡£¡£µ«ÕâÒ²¿ÉÄÜ»áÒý·¢Ò»Ð©Çå¾²ÎÊÌâ ¡£¡£¡£¡£ ¡£¡£ÕâЩʵÏÖȱÏÝͨ³£Òâζ×ÅJWTµÄÊðÃûûÓб»×¼È·ÑéÖ¤ ¡£¡£¡£¡£ ¡£¡£×ÝÈ»ÑÏ¿á¼ì²éÊðÃû£¬£¬£¬£¬£¬£¬¹¥»÷ÕßÒ²¿ÉÒÔͨ¹ýÁîÅÆµÄÔØºÉ¸Ä¶¯×ª´ï¸øÓ¦ÓóÌÐòµÄÖµ ¡£¡£¡£¡£ ¡£¡£ÊðÃûÊÇ·ñ¿ÉÒÔÐÅÈÎÔںܺéÁ÷ƽÉÏҲȡ¾öÓÚ·þÎñÆ÷µÄÃØÔ¿ÊÇ·ñÈÔÈ»ÊÇÇå¾²µÄ ¡£¡£¡£¡£ ¡£¡£ÈôÊÇÕâ¸öÃÜÔ¿±»Ð¹Â¶»òÕßÆÆ½â£¬£¬£¬£¬£¬£¬ÄÇô¹¥»÷Õ߾ͿÉÒÔΪí§ÒâÁîÅÆÌìÉúÓÐÓõÄÊðÃû£¬£¬£¬£¬£¬£¬´Ó¶ø¹¥ÏÝÕû¸ö»úÖÆ ¡£¡£¡£¡£ ¡£¡£

2.3 JWTÊðÃûÑéÖ¤

ƾ֤Éè¼Æ£¬£¬£¬£¬£¬£¬Ò»Ñùƽ³£ÇéÐÎÏ·þÎñÆ÷²»´æ´¢ÈκιØÓÚ½ÒÏþµÄJWTµÄÐÅÏ¢ ¡£¡£¡£¡£ ¡£¡£Òò´Ëÿ¸öÁîÅÆ¶¼ÊÇÒ»¸öÍêÈ«×ÔÁ¦µÄʵÌå ¡£¡£¡£¡£ ¡£¡£ËäÈ»ÕâÑù×öÓÐÐí¶àÓŵ㣬£¬£¬£¬£¬£¬µ«Ò²µ¼ÖÂÁËÒ»¸öÒþ»¼£¬£¬£¬£¬£¬£¬¼´·þÎñÆ÷ÏÖʵÉϲ»ÖªµÀ¹ØÓÚÁîÅÆµÄԭʼÄÚÈÝ£¬£¬£¬£¬£¬£¬ÉõÖÁ²»ÖªµÀԭʼÊðÃûÊÇʲô ¡£¡£¡£¡£ ¡£¡£ÕýÒòÔÆÔÆ£¬£¬£¬£¬£¬£¬ÈôÊÇ·þÎñÆ÷ûÓÐ׼ȷЧÑéÊðÃû£¬£¬£¬£¬£¬£¬Ò²¾ÍÎÞ·¨×èÖ¹¹¥»÷Õß¶ÔÁîÅÆµÄÆäËû²¿·Öí§Òâ¸Ä¶¯ ¡£¡£¡£¡£ ¡£¡£

ÀýÈ磬£¬£¬£¬£¬£¬Ò»¸ö°üÀ¨ÒÔÏÂÉùÃ÷µÄJWTÈçÏ£º

{

"username": "carlos",

"isAdmin": false

}

ÈôÊÇ·þÎñÆ÷ÊÇÆ¾Ö¤usernameÀ´Ê¶±ð»á»°£¬£¬£¬£¬£¬£¬ÄÇô¹¥»÷Õß¾ÍÄܹ»Í¨¹ýÐÞ¸ÄÓû§ÃûÀ´Ã°³äÆäËûÒѵǼµÄÓû§ ¡£¡£¡£¡£ ¡£¡£Í¬Ñù£¬£¬£¬£¬£¬£¬ÈôÊÇisAdminÖµ±»ÓÃÓÚ»á¼û¿ØÖÆ£¬£¬£¬£¬£¬£¬¹¥»÷ÕßÒ²¿ÉÒÔÌáͨ¹ý¸Ä¶¯Õâ¸öÖµÀ´ÊµÏÖÌáȨ ¡£¡£¡£¡£ ¡£¡£

03 JWTÏà¹ØÎó²îÀàÐÍ

3.1 ½ÓÊÜí§ÒâÊðÃû

JWT¿âͨ³£»£»£»£»£»£» £»£»áÌṩһ¸öÑéÖ¤ÁîÅÆµÄÒªÁ죬£¬£¬£¬£¬£¬Í¬Ê±Ìṩ¶ÔÆä½âÂëµÄÒªÁì ¡£¡£¡£¡£ ¡£¡£ÀýÈ磬£¬£¬£¬£¬£¬¹ØÓÚNode.js¿âjsonwebtokenÀ´Ëµ£¬£¬£¬£¬£¬£¬ÕâÁ½¸öÒªÁì»®·ÖÊÇverify()ºÍdecode() ¡£¡£¡£¡£ ¡£¡£

µ«ÓÐʱ¿ª·¢Ö°Ô±»á»ìÏýÕâÁ½¸öÒªÁ죬£¬£¬£¬£¬£¬Ö»°Ñ´«ÈëµÄÁîÅÆ´«¸ødecode()ÒªÁì ¡£¡£¡£¡£ ¡£¡£ÕâÏÖʵÉÏÒâζ×ÅÓ¦ÓóÌÐò»ù´¡¾ÍûÓжÔÊðÃû¾ÙÐÐÑéÖ¤ ¡£¡£¡£¡£ ¡£¡£

3.2 ½ÓÊÜδÊðÃûµÄÁîÅÆ

JWTÍ·²¿»¹°üÀ¨Ò»¸öalg²ÎÊý ¡£¡£¡£¡£ ¡£¡£¸Ã²ÎÊýµÄ×÷ÓþÍÊǸæËß·þÎñÆ÷¶ÔÁîÅÆ¾ÙÐÐÊðÃûʱʹÓõÄÊÇÄÄÖÖËã·¨£¬£¬£¬£¬£¬£¬»»¾ä»°Ëµ¾ÍÊÇÔÚÑéÖ¤ÊðÃûʱÐèҪʹÓÃÄÄÖÖËã·¨ ¡£¡£¡£¡£ ¡£¡£

{

"alg": "HS256",

"typ": "JWT"

}

µ«ÊµÖÊÉÏÕâÖÖÒªÁì±£´æÇå¾²Òþ»¼£¬£¬£¬£¬£¬£¬ÓÉÓÚ·þÎñÆ÷Ö»ÄÜÒþʽµØÐÅÈÎÌṩÁîÅÆµÄÓû§µÄÊäÈë£¨×¢ÖØ£¬£¬£¬£¬£¬£¬ÕâЩÊäÈëÊÜ¿ØÓÚ¸ÃÓû§£©£¬£¬£¬£¬£¬£¬¶ø¸ÃÁîÅÆ»ù´¡Ã»Óб»ÑéÖ¤¹ý ¡£¡£¡£¡£ ¡£¡£»£»£»£»£»£» £»£»»¾ä»°Ëµ¹¥»÷Õß¿ÉÒÔÖ±½ÓÓ°Ïì·þÎñÆ÷¼ì²éÁîÅÆÊÇ·ñÖµµÃÐÅÈεķ½·¨ ¡£¡£¡£¡£ ¡£¡£

JWT¼È¿ÉÒÔʹÓÃһϵÁвî±ðµÄËã·¨¾ÙÐÐÊðÃû£¬£¬£¬£¬£¬£¬Ò²¿ÉÒÔ²»ÊðÃû ¡£¡£¡£¡£ ¡£¡£ÔÚÕâÖÖÇéÐÎÏ£¬£¬£¬£¬£¬£¬alg²ÎÊý±»ÉèÖÃΪNone£¬£¬£¬£¬£¬£¬ÌåÏÖËùνµÄ "²»Çå¾²µÄJWT" ¡£¡£¡£¡£ ¡£¡£ÓÉÓÚÕâÖÖÇéÐÎÏÔ×ű£´æÇå¾²ÎÊÌ⣬£¬£¬£¬£¬£¬Òò´Ë·þÎñÆ÷ͨ³£»£»£»£»£»£» £»£»á¾Ü¾øÃ»ÓÐÊðÃûµÄÁîÅÆ ¡£¡£¡£¡£ ¡£¡£µ«ÓÉÓÚÕâÖÖ¹ýÂËÒÀÀµÓÚ×Ö·û´®ÆÊÎö£¬£¬£¬£¬£¬£¬ÒÔÊǹ¥»÷Õß¿ÉÒÔʹÓûìÏýÊÖÒÕÈÆ¹ýÕâЩ¹ýÂËÆ÷£¬£¬£¬£¬£¬£¬Èç»ìÏý´óдºÍ·ÇÔ¤ÆÚµÄ±àÂëµÈ ¡£¡£¡£¡£ ¡£¡££¨ÐèÒª×¢ÖØµÄÊÇ£¬£¬£¬£¬£¬£¬×ÝÈ»ÁîÅÆÊÇδÊðÃûµÄ£¬£¬£¬£¬£¬£¬Ôغɲ¿·ÖÒ²±ØÐèÒÔµãºÅ×îºó ¡£¡£¡£¡£ ¡£¡££©

3.3 ±©Á¦ÆÆ½âÃÜÔ¿

ijЩÊðÃûËã·¨£¬£¬£¬£¬£¬£¬ÀýÈçHS256£¨HMAC + SHA-256£©£¬£¬£¬£¬£¬£¬»áÏñÃÜÂëÒ»ÑùʹÓÃÒ»¸öí§ÒâµÄ¡¢×ÔÁ¦µÄ×Ö·û´®×÷ΪÉñÒþÃØÔ¿ ¡£¡£¡£¡£ ¡£¡£ÐèÒª°ü¹ÜÕâ¸öÃØÔ¿²»±»ÈÝÒײµ½»ò±©Á¦ÆÆ½â£¬£¬£¬£¬£¬£¬²»È»¹¥»÷ÕßÄÜÒÔí§ÒâµÄÍ·²¿ºÍÔØºÉÖµÀ´½¨ÉèJWT£¬£¬£¬£¬£¬£¬È»ºóÓÃÃÜÔ¿ÖØÐ¸øÁîÅÆÊðÃû ¡£¡£¡£¡£ ¡£¡£

ÔÚʵÏÖJWTÓ¦ÓÃʱ£¬£¬£¬£¬£¬£¬¿ª·¢Ö°Ô±ÓÐʱ»áÒÅÍü¸Ä±äĬÈÏ»òռλµÄÃÜÂ룬£¬£¬£¬£¬£¬ÉõÖÁ¿ÉÄܸ´ÖƺÍÕ³ÌùÔÚÍøÉÏÕÒµ½µÄ´úÂëÆ¬¶Ï£¬£¬£¬£¬£¬£¬È»ºóÒÅÍü¸Ä±ä×÷ΪʾÀýÌṩµÄÓ²±àÂëµÄÃÜÂë ¡£¡£¡£¡£ ¡£¡£ÔÚÕâÖÖÇéÐÎÏ£¬£¬£¬£¬£¬£¬¹¥»÷ÕßʹÓÃÊ¢ÐеÄÃÜÂë±¾£¬£¬£¬£¬£¬£¬¿ÉÒÔÇáËɶԷþÎñÆ÷µÄÉϰ¶Æ¾Ö¤¾ÙÐб©Á¦ÆÆ½â ¡£¡£¡£¡£ ¡£¡£

3.4 JWTÍ·²¿²ÎÊý×¢Èë

ƾ֤JWS¹æ·¶£¬£¬£¬£¬£¬£¬Ö»ÓÐÍ·²¿²ÎÊýalgÊDZØÐèµÄ ¡£¡£¡£¡£ ¡£¡£È»¶øÏÖʵÖÐJWTÍ·²¿£¨Ò²³ÆÎªJOSEÍ·²¿£©Í¨³£°üÀ¨ÆäËû¼¸¸ö²ÎÊý ¡£¡£¡£¡£ ¡£¡£ÒÔÏÂÊǹ¥»÷ÕßÌØÊâ¸ÐÐËȤµÄ²ÎÊý£º

jwk£¨JSON Web Key£©£ºÌṩһ¸öÌåÏÖÃÜÔ¿µÄǶÈëʽJSON¹¤¾ß ¡£¡£¡£¡£ ¡£¡£

jku£¨JSON Web Key Set URL£©£ºÌṩһ¸öURL£¬£¬£¬£¬£¬£¬·þÎñÆ÷¿ÉÒÔ´ÓÖлñȡһ×é°üÀ¨×¼È·ÃÜÔ¿µÄÃÜÔ¿ ¡£¡£¡£¡£ ¡£¡£

kid£¨Key ID£©£ºÌṩһ¸öID£¬£¬£¬£¬£¬£¬ÔÚÓжà¸öÃÜÔ¿¿É¹©Ñ¡ÔñµÄÇéÐÎÏ£¬£¬£¬£¬£¬£¬·þÎñÆ÷¿ÉÒÔʹÓøÃIDÀ´Ê¶±ð׼ȷµÄÃÜÔ¿ ¡£¡£¡£¡£ ¡£¡£Æ¾Ö¤ÃÜÔ¿µÄÃûÌÿÉÄÜÉÐÓÐÒ»¸öÆ¥ÅäµÄkid²ÎÊý ¡£¡£¡£¡£ ¡£¡£

ÈçÉÏ£¬£¬£¬£¬£¬£¬ÕâЩÓû§¿É¿ØÖƵIJÎÊýÓÃÓÚ¸æËßÎüÊÕ·½·þÎñÆ÷ÔÚÑéÖ¤ÊðÃûʱʹÓÃÄÄЩÃÜÔ¿ ¡£¡£¡£¡£ ¡£¡£

3.5 jwk²ÎÊý×¢Èë

JSON WebÊðÃû£¨JWS£©¹æ·¶ÐÎòÁËÒ»¸ö¿ÉÑ¡µÄjwkÍ·²¿²ÎÊý£¬£¬£¬£¬£¬£¬·þÎñÆ÷¿ÉÒÔÓÃËü½«Æä¹«Ô¿Ö±½ÓǶÈëJWKÃûÌõÄÁîÅÆ×Ô¼º ¡£¡£¡£¡£ ¡£¡£JWK£¨JSON WebÃÜÔ¿£©ÊÇÒ»ÖÖ±ê×¼»¯µÄÃûÌ㬣¬£¬£¬£¬£¬ÓÃÓÚ½«ÃÜÔ¿ÌåÏÖΪJSON¹¤¾ß ¡£¡£¡£¡£ ¡£¡£

JWTÍ·²¿Ê¾ÀýÈçÏ£º

{

"kid": "ed2Nf8sb-sD6ng0-scs5390g-fFD8sfxG",

"typ": "JWT",

"alg": "RS256",

"jwk": {

"kty": "RSA",

"e": "AQAB",

"kid": "ed2Nf8sb-sD6ng0-scs5390g-fFD8sfxG",

"n": "yy1wpYmffgXBxhAUJzHHocCuJolwDqql75ZWuCQ_cb33K2vh9m"

}

}

ÀíÏëÇéÐÎÏ£¬£¬£¬£¬£¬£¬·þÎñÆ÷Ó¦¸ÃֻʹÓÃÓÐÏ޵Ĺ«Ô¿°×Ãûµ¥À´ÑéÖ¤JWTÊðÃû ¡£¡£¡£¡£ ¡£¡£È»¶øÉèÖùýʧµÄ·þÎñÆ÷ÓÐʱ»áʹÓÃjwk²ÎÊýÖÐǶÈëµÄÈκÎÃÜÔ¿À´ÑéÖ¤ÊðÃû ¡£¡£¡£¡£ ¡£¡£

Òò´Ë¹¥»÷Õß¿ÉÒÔʹÓÃÕâÖÖÐÐΪ£¬£¬£¬£¬£¬£¬ÓÃ×Ô¼ºµÄRSA˽Կ¶ÔÐ޻ڸĵÄJWT¾ÙÐÐÊðÃû£¬£¬£¬£¬£¬£¬È»ºóÔÚjwkÍ·²¿ÖÐǶÈë¶ÔÓ¦µÄ¹«Ô¿ ¡£¡£¡£¡£ ¡£¡£

ËäȻҲ¿ÉÒÔÔÚBurpÖÐÊÖ¶¯Ìí¼Ó»òÐÞ¸Äjwk²ÎÊý£¬£¬£¬£¬£¬£¬µ«JWT±à¼­Æ÷À©Õ¹ÌṩÁËÒ»¸öºÜÊÇÀû±ãµÄ¹¦Ð§£¬£¬£¬£¬£¬£¬ÓÃÓÚ×ÊÖúÑо¿Ö°Ô±²âÊÔÕâ¸öÎó²î£º

ÔÚ¼ÓÔØ¸ÃÀ©Õ¹ºó£¬£¬£¬£¬£¬£¬ÔÚBurpµÄÖ÷Ñ¡ÏÀ¸ÖУ¬£¬£¬£¬£¬£¬×ªµ½JWT Editor KeysÑ¡Ï ¡£¡£¡£¡£ ¡£¡£

½¨ÉèÒ»¸öеÄRSAÃÜÔ¿ ¡£¡£¡£¡£ ¡£¡£

ÏòBurp Repeater·¢ËÍÒ»¸ö°üÀ¨JWTµÄÇëÇó ¡£¡£¡£¡£ ¡£¡£

ÔÚÐÂÎű༭Æ÷ÖУ¬£¬£¬£¬£¬£¬Çл»µ½À©Õ¹ÌìÉúµÄJSON Web TokenÑ¡Ï£¬£¬£¬£¬£¬£¬²¢ÒÔÄãϲ»¶µÄ·½·¨ÐÞ¸ÄÁîÅÆµÄÔØºÉ ¡£¡£¡£¡£ ¡£¡£

µã»÷Attack°´Å¥£¬£¬£¬£¬£¬£¬È»ºóÑ¡ÔñEmbedded JWK ¡£¡£¡£¡£ ¡£¡£µ±ÊÕµ½ÌáÐÑʱ£¬£¬£¬£¬£¬£¬Ñ¡ÔñÐÂÌìÉúµÄRSAÃÜÔ¿ ¡£¡£¡£¡£ ¡£¡£

·¢ËÍÇëÇ󣬣¬£¬£¬£¬£¬²âÊÔ·þÎñÆ÷µÄÏìÓ¦ÇéÐÎ ¡£¡£¡£¡£ ¡£¡£

ÓÐЩ·þÎñÆ÷²¢²»»áÖ±½ÓʹÓÃjwkÍ·²¿²ÎÊýÀ´Ç¶È빫Կ£¬£¬£¬£¬£¬£¬¶øÊÇʹÓÃjku£¨JWK Set URL£©Í·²¿²ÎÊýÀ´ÒýÓÃÒ»¸ö°üÀ¨ÃÜÔ¿µÄJWK Set ¡£¡£¡£¡£ ¡£¡£µ±ÑéÖ¤ÊðÃûʱ£¬£¬£¬£¬£¬£¬·þÎñÆ÷»á´ÓÕâ¸öURLÖлñÈ¡Ïà¹ØµÄÃÜÔ¿ ¡£¡£¡£¡£ ¡£¡£

ÏÖʵÉÏËùνJWK Set¾ÍÊÇÒ»¸öJSON¹¤¾ß£¬£¬£¬£¬£¬£¬ÆäÖаüÀ¨Ò»×éÌåÏÖÃÜÔ¿µÄJWK£¬£¬£¬£¬£¬£¬ÀýÈ磺

{

"keys": [

{

"kty": "RSA",

"e": "AQAB",

"kid": "75d0ef47-af89-47a9-9061-7c02a610d5ab",

"n": "o-yy1wpYmffgXBxhAUJzHHocCuJolwDqql75ZWuCQ_cb33K2vh9mk6GPM9gNN4Y_qTVX67WhsN3JvaFYw-fhvsWQ"

},

{

"kty": "RSA",

"e": "AQAB",

"kid": "d8fDFo-fS9-faS14a9-ASf99sa-7c1Ad5abA",

"n": "fc3f-yy1wpYmffgXBxhAUJzHql79gNNQ_cb33HocCuJolwDqmk6GPM4Y_qTVX67WhsN3JvaFYw-dfg6DH-asAScw"

}

]

}

ÏñÕâÑùµÄJWK¼¯ÓÐʱ»áͨ¹ýÒ»¸ö±ê×¼µÄ¶Ëµã¶ÔÍâ¹ûÕæ£¬£¬£¬£¬£¬£¬Èç/.known/jwks.json£¬£¬£¬£¬£¬£¬¹¥»÷ÕßÓÐʱ¿ÉÒÔʹÓÃURLÆÊÎöµÄ²î±ðÀ´ÈƹýÕâÖÖ¹ýÂË»úÖÆ ¡£¡£¡£¡£ ¡£¡£

3.7 kid²ÎÊý×¢Èë

·þÎñÆ÷¿ÉÄÜ»áʹÓöà¸ö¼ÓÃÜÃÜÔ¿À´Îª²î±ðÀàÐ͵ÄÊý¾Ý¾ÙÐÐÊðÃû ¡£¡£¡£¡£ ¡£¡£³öÓÚÕâ¸öÔµ¹ÊÔ­ÓÉ£¬£¬£¬£¬£¬£¬JWTµÄÍ·²¿¿ÉÄܰüÀ¨Ò»¸ökid£¨ÃÜÔ¿ID£©²ÎÊý£¬£¬£¬£¬£¬£¬ÓÃÀ´×ÊÖú·þÎñÆ÷ʶ±ðÔÚÑéÖ¤ÊðÃûʱҪʹÓõÄÃÜÔ¿ ¡£¡£¡£¡£ ¡£¡£

ÑéÖ¤ÃÜԿͨ³£±»´æ´¢ÎªJWK Set ¡£¡£¡£¡£ ¡£¡£ÔÚÕâÖÖÇéÐÎÏ£¬£¬£¬£¬£¬£¬·þÎñÆ÷¿ÉÒÔÖ±½ÓѰÕÒÓëÁîÅÆ¾ßÓÐÏàͬkid²ÎÊýµÄJWK ¡£¡£¡£¡£ ¡£¡£È»¶øJWS¹æ·¶²¢Ã»ÓÐΪÕâ¸öID½ç˵ÏêϸµÄ½á¹¹£¬£¬£¬£¬£¬£¬ËüÖ»ÊÇ¿ª·¢Ö°Ô±í§ÒâÑ¡ÔñµÄÒ»¸ö×Ö·û´® ¡£¡£¡£¡£ ¡£¡£ÀýÈç¿ÉÒÔʹÓÃkid²ÎÊýÀ´Ö¸ÏòÊý¾Ý¿âÖеÄÒ»¸öÌØ¶¨ÌõÄ¿£¬£¬£¬£¬£¬£¬ÉõÖÁÎļþÃû³Æ ¡£¡£¡£¡£ ¡£¡£

ÈôÊǸòÎÊýÊܵ½Ä¿Â¼±éÀúµÄÓ°Ï죬£¬£¬£¬£¬£¬¹¥»÷Õß¾ÍÓпÉÄÜÆÈʹ·þÎñÆ÷ʹÓÃÆäÎļþϵͳÖеÄí§ÒâÎļþ×÷ΪÑéÖ¤ÃÜÔ¿ ¡£¡£¡£¡£ ¡£¡£

{

"kid": "../../path/to/file",

"typ": "JWT",

"alg": "HS256",

"k": "asGsADas3421-dfh9DGN-AFDFDbasfd8-anfjkvc"

}

ÈôÊÇ·þÎñÆ÷Ò²Ö§³ÖʹÓöԳÆË㷨ΪJWTÊðÃû£¬£¬£¬£¬£¬£¬¹¥»÷Õß¿ÉÒÔ½«kid²ÎÊýÖ¸ÏòÒ»¸ö¿ÉÕ¹ÍûµÄ¾²Ì¬Îļþ£¬£¬£¬£¬£¬£¬È»ºóÓÃÒ»¸öÓë¸ÃÎļþÄÚÈÝÏàÆ¥ÅäµÄÉñÃØÀ´¸øJWTÊðÃû£¬£¬£¬£¬£¬£¬¼òÆÓµÄÒªÁìÖ®Ò»ÊÇʹÓÃ/dev/null ¡£¡£¡£¡£ ¡£¡£¸ÃÎļþÊÇÒ»¸ö¿ÕÎļþ£¬£¬£¬£¬£¬£¬¶Áȡʱ½«·µ»Ønull£¬£¬£¬£¬£¬£¬¿ÉÒÔÓÃÒ»¸öBase64±àÂëµÄnull×Ö½ÚÀ´¸øÁîÅÆÊðÃû½«»ñµÃÒ»¸öÓÐÓõÄÊðÃû ¡£¡£¡£¡£ ¡£¡£

ÈôÊÇ·þÎñÆ÷½«ÆäÑéÖ¤ÃÜÔ¿´æ´¢ÔÚÊý¾Ý¿âÖУ¬£¬£¬£¬£¬£¬kidÍ·²¿²ÎÊýÒ²ÊÇÒ»¸öDZÔÚµÄSQL×¢Èë¹¥»÷µÄÔØÌå ¡£¡£¡£¡£ ¡£¡£

3.8ÆäËûJWTÍ·²¿²ÎÊý

cty£¨ÄÚÈÝÀàÐÍ£©£ºÓÃÀ´ÉùÃ÷JWTÔØºÉÖÐÄÚÈݵÄýÌåÀàÐÍ ¡£¡£¡£¡£ ¡£¡£Í¨³£ÇéÐÎÏ»áÊ¡ÂԸòÎÊý£¬£¬£¬£¬£¬£¬µ«µ×²ãÆÊÎö¿â¿ÉÄÜÕÕ¾ÉÖ§³ÖËü ¡£¡£¡£¡£ ¡£¡£ÈôÊǹ¥»÷ÕßÒѾ­ÕÒµ½ÁËÈÆ¹ýÊðÃûÑéÖ¤µÄÒªÁ죬£¬£¬£¬£¬£¬¿ÉÄÜ»áʵÑé×¢Èëcty²ÎÊý£¬£¬£¬£¬£¬£¬½«ÄÚÈÝÀàÐ͸ÄΪtext/xml»òapplication/x-java-serialized-object£¬£¬£¬£¬£¬£¬ÕâÓпÉÄÜΪXXEºÍ·´ÐòÁл¯¹¥»÷ÌṩеÄÏòÁ¿ ¡£¡£¡£¡£ ¡£¡£

x5c£¨X.509Ö¤ÊéÁ´£©£ºÓÃÓÚת´ïÓÃÓÚ¶ÔJWT¾ÙÐÐÊý×ÖÊðÃûµÄX.509¹«Ô¿Ö¤Êé»òÖ¤ÊéÁ´ ¡£¡£¡£¡£ ¡£¡£Õâ¸öÍ·²¿²ÎÊý¿ÉÓÃÓÚ×¢Èë×Ôǩ֤Ê飬£¬£¬£¬£¬£¬ÀàËÆÓÚÉÏÃæÌÖÂÛµÄjwkÍ·²¿×¢Èë¹¥»÷ ¡£¡£¡£¡£ ¡£¡£ÓÉÓÚX.509ÃûÌü°ÆäÀ©Õ¹µÄÖØ´óÐÔ£¬£¬£¬£¬£¬£¬ÆÊÎöÕâЩ֤ÊéÒ²ºÜ¿ÉÄÜ»áÒýÈëÎó²î ¡£¡£¡£¡£ ¡£¡£

3.9 JWTËã·¨»ìÏý

×ÝÈ»·þÎñÆ÷ʹÓÃÁ˹¥»÷ÕßÎÞ·¨ÆÆ½âµÄÇ¿ÃÜÂ룬£¬£¬£¬£¬£¬¶Ô·½ÈÔÈ»¿ÉÒÔʹÓÿª·¢Ö°Ô±Ã»ÓÐÔ¤ÍÆ²âµÄËã·¨ÊðÃûÁîÅÆÀ´Î±ÔìÓÐÓõÄJWT£¬£¬£¬£¬£¬£¬Õâ¾ÍÊÇËùνµÄËã·¨»ìÏý¹¥»÷ ¡£¡£¡£¡£ ¡£¡£

04 ·ÀÓùJWT¹¥»÷

ʹÓÃ×îеĿâÀ´´¦Öóͷ£JWT£¬£¬£¬£¬£¬£¬²¢È·±£¿£¿£¿£¿£¿£¿£¿ª·¢Ö°Ô±¶ÔÏà¹ØÇå¾²ÎÊÌâ×ã¹»Ïàʶ ¡£¡£¡£¡£ ¡£¡£ÏÖ´ú´úÂë¿âµÄʹÓýµµÍÁËÔÚ´úÂëʵÏÖÖÐÒýÈëÇå¾²Îó²îµÄ¿ÉÄÜÐÔ£¬£¬£¬£¬£¬£¬µ«ÓÉÓÚÏà¹Ø¹æ·¶¹ÌÓеÄÎÞаÐÔ£¬£¬£¬£¬£¬£¬Ò²²¢·ÇÍòÎÞһʧ ¡£¡£¡£¡£ ¡£¡£

È·±£¶ÔÊÕµ½µÄÈκÎJWT¾ÙÐÐÑÏ¿áµÄÊðÃûÑéÖ¤£¬£¬£¬£¬£¬£¬²¢Ë¼Á¿±ßÑØÇéÐΣ¬£¬£¬£¬£¬£¬ÈçʹÓ÷ÇÔ¤ÆÚµÄËã·¨ÊðÃûµÄJWT ¡£¡£¡£¡£ ¡£¡£

ΪjkuÍ·²¿ÌṩÔÊÐíÖ÷»ú°×Ãûµ¥£¬£¬£¬£¬£¬£¬²¢ÑÏ¿áÖ´ÐÐ ¡£¡£¡£¡£ ¡£¡£

È·±£²»»áÊܵ½kidÍ·²¿²ÎÊý·¾¶´©Ô½»òSQL×¢ÈëµÄÓ°Ïì ¡£¡£¡£¡£ ¡£¡£

05 ²Î¿¼Á´½Ó

https://portswigger.net/web-security/jwt

https://blog.csdn.net/cdyunaq/article/details/122561096

Òªº¦´Ê±êÇ©£º
¼ì²âÓë·À»¤ÄÜÁ¦ JWT¹¥»÷ÀàÐÍ
¿Í»§·þÎñÈÈÏß

400-777-0777
7*24Сʱ·þÎñ

ÁªÏµÓÊÏä

servicing@topsec.com.cn

ɨÂë¹Ø×¢
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿