FixVibe
Covered by FixVibehigh

ການປົກປ້ອງ CSRF: ປ້ອງກັນການປ່ຽນແປງຂອງລັດທີ່ບໍ່ໄດ້ຮັບອະນຸຍາດ

Cross-Site Request Forgery (CSRF) ຍັງຄົງເປັນໄພຂົ່ມຂູ່ອັນສໍາຄັນຕໍ່ກັບຄໍາຮ້ອງສະຫມັກເວັບໄຊຕ໌. ການຄົ້ນຄວ້ານີ້ຄົ້ນຄວ້າວິທີການທີ່ກອບທີ່ທັນສະໄຫມເຊັ່ນ Django ປະຕິບັດການປົກປ້ອງແລະວິທີການຄຸນລັກສະນະລະດັບຕົວທ່ອງເວັບເຊັ່ນ SameSite ສະຫນອງການປ້ອງກັນໃນຄວາມເລິກຕໍ່ກັບຄໍາຮ້ອງຂໍທີ່ບໍ່ໄດ້ຮັບອະນຸຍາດ.

CWE-352

ຜົນກະທົບ

Cross-Site Request Forgery (CSRF) ອະນຸຍາດໃຫ້ຜູ້ໂຈມຕີສາມາດຫຼອກລວງຕົວທ່ອງເວັບຂອງຜູ້ຖືກເຄາະຮ້າຍໃຫ້ປະຕິບັດການກະທໍາທີ່ບໍ່ຕ້ອງການຢູ່ໃນເວັບໄຊທ໌ທີ່ແຕກຕ່າງກັນທີ່ຜູ້ຖືກເຄາະຮ້າຍໄດ້ຮັບການຢືນຢັນໃນປັດຈຸບັນ. ເນື່ອງຈາກຕົວທ່ອງເວັບຈະລວມເອົາຂໍ້ມູນປະຈໍາຕົວຂອງສະພາບແວດລ້ອມໄວ້ໂດຍອັດຕະໂນມັດເຊັ່ນ cookies ໃນການຮ້ອງຂໍ, ຜູ້ໂຈມຕີສາມາດປອມແປງການປະຕິບັດການປ່ຽນສະຖານະ - ເຊັ່ນ: ການປ່ຽນລະຫັດຜ່ານ, ການລຶບຂໍ້ມູນ, ຫຼືການເລີ່ມຕົ້ນການເຮັດທຸລະກໍາ - ໂດຍທີ່ຜູ້ໃຊ້ບໍ່ຮູ້.

ສາເຫດ

ສາເຫດພື້ນຖານຂອງ CSRF ແມ່ນພຶດຕິກໍາເລີ່ມຕົ້ນຂອງຕົວທ່ອງເວັບຂອງຕົວທ່ອງເວັບທີ່ຈະສົ່ງ cookies ທີ່ກ່ຽວຂ້ອງກັບໂດເມນທຸກຄັ້ງທີ່ມີການຮ້ອງຂໍໃຫ້ກັບໂດເມນນັ້ນ, ໂດຍບໍ່ຄໍານຶງເຖິງຕົ້ນກໍາເນີດຂອງຄໍາຮ້ອງຂໍ [S1]. ໂດຍບໍ່ມີການກວດສອບສະເພາະວ່າຄໍາຮ້ອງຂໍຖືກກະຕຸ້ນໂດຍເຈດຕະນາຈາກສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ຂອງແອັບພລິເຄຊັນເອງ, ເຊີບເວີບໍ່ສາມາດຈໍາແນກໄດ້ລະຫວ່າງການກະທໍາທີ່ຖືກຕ້ອງຂອງຜູ້ໃຊ້ແລະການປອມແປງ.

ກົນໄກການປົກປ້ອງ Django CSRF

Django ສະໜອງລະບົບປ້ອງກັນຕົວໃນຕົວເພື່ອຫຼຸດຜ່ອນຄວາມສ່ຽງເຫຼົ່ານີ້ຜ່ານຕົວກາງ ແລະແບບປະສົມປະສານ [S2].

ການເປີດໃຊ້ງານ Middleware

django.middleware.csrf.CsrfViewMiddleware ມີຄວາມຮັບຜິດຊອບຕໍ່ການປົກປ້ອງ CSRF ແລະໂດຍທົ່ວໄປແລ້ວຈະຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ [S2]. ມັນຕ້ອງຖືກຈັດວາງໄວ້ກ່ອນທຸກມຸມເບິ່ງຕົວກາງທີ່ສົມມຸດວ່າການໂຈມຕີ CSRF ໄດ້ຖືກຈັດການແລ້ວ [S2].

ການຈັດຕັ້ງປະຕິບັດແມ່ແບບ

ສໍາລັບແບບຟອມ POST ພາຍໃນໃດນຶ່ງ, ນັກພັດທະນາຈະຕ້ອງໃສ່ແທັກ {% csrf_token %} ພາຍໃນອົງປະກອບ <form> [S2]. ນີ້ຮັບປະກັນວ່າ token ທີ່ເປັນເອກະລັກສະເພາະແມ່ນລວມຢູ່ໃນຄໍາຮ້ອງຂໍ, ເຊິ່ງເຊີບເວີຈະກວດສອບກັບເຊດຊັນຂອງຜູ້ໃຊ້.

ຄວາມສ່ຽງຕໍ່ການຮົ່ວໄຫຼຂອງໂທເຄັນ

ລາຍລະອຽດການປະຕິບັດທີ່ສໍາຄັນແມ່ນວ່າ {% csrf_token %} ບໍ່ຄວນຖືກລວມຢູ່ໃນແບບຟອມທີ່ກໍາຫນົດເປົ້າຫມາຍ URL ພາຍນອກ [S2]. ການເຮັດດັ່ງນັ້ນຈະຮົ່ວໄຫລຂອງໂທເຄັນ CSRF ລັບໄປຫາບຸກຄົນທີສາມ, ອາດຈະທໍາລາຍຄວາມປອດໄພຂອງເຊດຊັນຂອງຜູ້ໃຊ້ [S2].

Browser-Level Defense: SameSite Cookies

ຕົວທ່ອງເວັບທີ່ທັນສະໄຫມໄດ້ນໍາສະເຫນີຄຸນລັກສະນະ SameSite ສໍາລັບຫົວຂໍ້ Set-Cookie ເພື່ອສະຫນອງຊັ້ນຂອງການປ້ອງກັນໃນຄວາມເລິກ [S1].

  • ເຂັ້ມງວດ: ຄຸກກີຖືກສົ່ງພຽງແຕ່ໃນບໍລິບົດຂອງບຸກຄົນທໍາອິດ, ຊຶ່ງຫມາຍຄວາມວ່າເວັບໄຊທ໌ໃນແຖບ URL ກົງກັບໂດເມນຂອງຄຸກກີ [S1].
  • Lax: ຄຸກກີບໍ່ໄດ້ຖືກສົ່ງໄປຕາມຄໍາຮ້ອງຂໍຍ່ອຍຂ້າມເວັບໄຊ (ເຊັ່ນ: ຮູບພາບ ຫຼືກອບ) ແຕ່ຖືກສົ່ງເມື່ອຜູ້ໃຊ້ໄປຫາເວັບໄຊທ໌ຕົ້ນທາງ, ເຊັ່ນ: ໂດຍປະຕິບັດຕາມການເຊື່ອມຕໍ່ມາດຕະຖານ [S1].

ວິທີການ FixVibe ທົດສອບສໍາລັບມັນ

FixVibe ຕອນນີ້ປະກອບມີການປົກປ້ອງ CSRF ເປັນການກວດສອບທີ່ມີປະຕູຮົ້ວ. ຫຼັງຈາກການກວດສອບໂດເມນ, active.csrf-protection ກວດສອບການຄົ້ນພົບຮູບແບບການປ່ຽນແປງຂອງລັດ, ກວດສອບການປ້ອນຂໍ້ມູນທີ່ມີຮູບຊົງ CSRF ແລະສັນຍານຄຸກກີ SameSite, ຈາກນັ້ນພະຍາຍາມສົ່ງຂໍ້ມູນຕົ້ນກຳເນີດປອມ ແລະລາຍງານພຽງແຕ່ເມື່ອເຊີບເວີຍອມຮັບມັນ. ການກວດສອບຄຸກກີຍັງລາຍງານຄຸນລັກສະນະ SameSite ທີ່ອ່ອນແອທີ່ຫຼຸດຜ່ອນການປ້ອງກັນ CSRF ໃນຄວາມເລິກ.