ຜົນກະທົບຂອງຜູ້ໂຈມຕີ
ການກວດສອບ JWT ທີ່ບໍ່ຖືກຕ້ອງເຮັດໃຫ້ຜູ້ໂຈມຕີສາມາດຂ້າມກົນໄກການກວດສອບໂດຍການປອມແປງ ຫຼືໃຊ້ໂທເຄັນໝົດອາຍຸ [S1] ຄືນໃໝ່. ຖ້າເຊີບເວີຍອມຮັບໂທເຄັນໂດຍບໍ່ມີລາຍເຊັນທີ່ຖືກຕ້ອງ, ຜູ້ໂຈມຕີສາມາດດັດແປງ payload ເພື່ອຂະຫຍາຍສິດທິພິເສດ ຫຼືປອມຕົວເປັນຜູ້ໃຊ້ [S1]. ນອກຈາກນັ້ນ, ການບໍ່ບັງຄັບໃຊ້ການໝົດອາຍຸການຮຽກຮ້ອງ (exp) ອະນຸຍາດໃຫ້ຜູ້ໂຈມຕີໃຊ້ໂທເຄັນທີ່ຖືກລະເມີດຢ່າງບໍ່ມີກຳນົດ [S1].
ສາເຫດ
A JSON Web Token (JWT) ແມ່ນໂຄງສ້າງທີ່ອີງໃສ່ JSON ທີ່ໃຊ້ເພື່ອສະແດງການອ້າງສິດທີ່ຖືກເຊັນດ້ວຍດິຈິຕອລ ຫຼື ປົກປ້ອງຄວາມຊື່ສັດ [S1]. Security failures typically stem from two primary implementation gaps:
- ການຍອມຮັບ JWTs ທີ່ບໍ່ປອດໄພ: ຖ້າການບໍລິການບໍ່ບັງຄັບການຢັ້ງຢືນລາຍເຊັນຢ່າງເຂັ້ມງວດ, ມັນອາດຈະດໍາເນີນການ "JWTs ທີ່ບໍ່ປອດໄພ" ທີ່ລາຍເຊັນແມ່ນບໍ່ມີ ແລະລະບົບຕັ້ງເປັນ "ບໍ່ມີ" [S1]. In this scenario, the server trusts the claims in the payload without verifying their integrity [S1].
- ການຢືນຢັນການອ້າງສິດທີ່ຂາດຫາຍໄປ: ການອ້າງສິດ
exp(ເວລາໝົດອາຍຸ) ຈະລະບຸເວລາທີ່ JWT ຈະຕ້ອງບໍ່ຖືກຍອມຮັບສຳລັບການປະມວນຜົນ [S1]. Theaud(audience) claim identifies the intended recipients of the token [S1]. If these are not checked, the server may accept tokens that are expired or were intended for a different application [S1].
ແກ້ໄຂຄອນກີດ
- ບັງຄັບໃຊ້ລາຍເຊັນເຂົ້າລະຫັດ: ກຳນົດຄ່າແອັບພລິເຄຊັນເພື່ອປະຕິເສດ JWT ໃດໆກໍຕາມທີ່ບໍ່ໄດ້ໃຊ້ລະບົບການເຊັນຊື່ທີ່ອະນຸມັດກ່ອນ, ທີ່ເຂັ້ມແຂງ (ເຊັ່ນ: RS256).
- ກວດສອບການໝົດອາຍຸ: ປະຕິບັດການກວດສອບບັງຄັບເພື່ອຮັບປະກັນວັນທີ ແລະເວລາປັດຈຸບັນແມ່ນກ່ອນເວລາທີ່ກຳນົດໄວ້ໃນ
expອ້າງສິດ [S1]. - Verify Audience: Ensure the
audclaim contains a value identifying the local service; if the service is not identified in theaudclaim, the token must be rejected [S1]. - ປ້ອງກັນການຫຼິ້ນຊ້ຳ: ໃຊ້ລະຫັດ
jti(JWT ID) ເພື່ອມອບໝາຍຕົວລະບຸທີ່ເປັນເອກະລັກໃຫ້ກັບແຕ່ລະ token, ເຮັດໃຫ້ເຊີບເວີສາມາດຕິດຕາມ ແລະປະຕິເສດ tokens ທີ່ໃຊ້ຄືນ [S1].
ຍຸດທະສາດການຊອກຄົ້ນຫາ
Vulnerabilities in JWT handling can be identified by analyzing the token structure and server response behavior:
- ການກວດກາສ່ວນຫົວ: ກວດສອບສ່ວນຫົວ
alg(algorithm) ເພື່ອຮັບປະກັນວ່າມັນບໍ່ໄດ້ຕັ້ງເປັນ "ບໍ່ມີ" ແລະໃຊ້ມາດຕະຖານການເຂົ້າລະຫັດທີ່ຄາດໄວ້ [S1]. - ການກວດສອບການອ້າງສິດ: ຢືນຢັນການມີຢູ່ ແລະຄວາມຖືກຕ້ອງຂອງ
exp(ໝົດອາຍຸ) ແລະaud(ຜູ້ຊົມ) ການຮຽກຮ້ອງພາຍໃນ JSON payload [S1]. - ການທົດສອບຄວາມຖືກຕ້ອງ: ການທົດສອບຖ້າເຊີບເວີປະຕິເສດ tokens ທີ່ໝົດອາຍຸຢ່າງຖືກຕ້ອງຕາມການຮຽກຮ້ອງ
expຫຼືມີຈຸດປະສົງສໍາລັບຜູ້ຊົມທີ່ແຕກຕ່າງກັນຕາມທີ່ກໍານົດໂດຍaudການຮຽກຮ້ອງ [S1].
