FixVibe
Covered by FixVibecritical

SQL Injection: ປ້ອງກັນການເຂົ້າເຖິງຖານຂໍ້ມູນທີ່ບໍ່ໄດ້ຮັບອະນຸຍາດ

ການສີດ SQL (SQLi) ເປັນຊ່ອງໂຫວ່ທີ່ສໍາຄັນທີ່ຜູ້ໂຈມຕີແຊກແຊງການສອບຖາມຖານຂໍ້ມູນຂອງແອັບພລິເຄຊັນ. ໂດຍການໃສ່ syntax SQL ທີ່ເປັນອັນຕະລາຍ, ຜູ້ໂຈມຕີສາມາດຂ້າມຜ່ານການກວດສອບ, ເບິ່ງຂໍ້ມູນທີ່ລະອຽດອ່ອນເຊັ່ນ: ລະຫັດຜ່ານແລະລາຍລະອຽດບັດເຄຣດິດ, ຫຼືແມ້ກະທັ້ງການປະນີປະນອມກັບເຄື່ອງແມ່ຂ່າຍທີ່ຕິດພັນ.

CWE-89

ຜົນກະທົບຂອງ SQL Injection

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

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

ສາເຫດ: ການຈັດການການປ້ອນຂໍ້ມູນທີ່ບໍ່ປອດໄພ

ສາເຫດຂອງການສີດ SQL ແມ່ນການວາງຕົວເປັນກາງທີ່ບໍ່ຖືກຕ້ອງຂອງອົງປະກອບພິເສດທີ່ໃຊ້ໃນຄໍາສັ່ງ SQL [S2]. ອັນນີ້ເກີດຂຶ້ນເມື່ອແອັບພລິເຄຊັນສ້າງການສອບຖາມ SQL ໂດຍການລວມເອົາການປ້ອນຂໍ້ມູນພາຍນອກທີ່ມີອິດທິພົນໂດຍກົງເຂົ້າໃນສະຕຣິງສອບຖາມ [S1][S2].

ເນື່ອງຈາກວ່າການປ້ອນຂໍ້ມູນບໍ່ໄດ້ຖືກແຍກອອກຈາກໂຄງສ້າງແບບສອບຖາມຢ່າງຖືກຕ້ອງ, ນາຍພາສາຖານຂໍ້ມູນອາດຈະປະຕິບັດບາງສ່ວນຂອງການປ້ອນຂໍ້ມູນຂອງຜູ້ໃຊ້ເປັນລະຫັດ SQL ແທນທີ່ຈະປະຕິບັດມັນເປັນຂໍ້ມູນຕົວຈິງ [S2]. ຊ່ອງໂຫວ່ນີ້ສາມາດສະແດງອອກໃນພາກສ່ວນຕ່າງໆຂອງການສອບຖາມ, ລວມທັງຖະແຫຼງການ SELECT, ຄ່າ INSERT, ຫຼືຖະແຫຼງການ UPDATE [S1].

ການສ້ອມແຊມ ແລະ ແກ້ໄຂຄອນກີດ

ໃຊ້ Parameterized Queries

ວິທີທີ່ມີປະສິດທິຜົນທີ່ສຸດໃນການປ້ອງກັນການສີດ SQL ແມ່ນການນໍາໃຊ້ການສອບຖາມ parameterized, ເຊິ່ງເອີ້ນກັນວ່າຄໍາຖະແຫຼງທີ່ກະກຽມ [S1]. ແທນທີ່ຈະ concatenating strings, ນັກພັດທະນາຄວນໃຊ້ກົນໄກທີ່ມີໂຄງສ້າງທີ່ບັງຄັບໃຊ້ການແຍກຂໍ້ມູນແລະລະຫັດ [S2].

ຫຼັກການສິດທິພິເສດໜ້ອຍທີ່ສຸດ

ແອັບພລິເຄຊັນຄວນເຊື່ອມຕໍ່ກັບຖານຂໍ້ມູນໂດຍໃຊ້ສິດທິພິເສດຕ່ໍາສຸດທີ່ຕ້ອງການສໍາລັບວຽກງານຂອງພວກເຂົາ [S2]. ບັນຊີແອັບພລິເຄຊັນເວັບບໍ່ຄວນມີສິດທິພິເສດໃນການບໍລິຫານ ແລະຄວນຈະຖືກຈຳກັດຢູ່ໃນຕາຕະລາງສະເພາະ ຫຼືການດຳເນີນການທີ່ຈຳເປັນສຳລັບການເຮັດວຽກຂອງມັນ [S2].

ການກວດສອບການປ້ອນຂໍ້ມູນແລະການເຂົ້າລະຫັດ

ໃນຂະນະທີ່ບໍ່ແມ່ນການທົດແທນສໍາລັບພາລາມິເຕີ, ການກວດສອບການປ້ອນຂໍ້ມູນສະຫນອງການປ້ອງກັນໃນຄວາມເລິກ [S2]. ແອັບພລິເຄຊັ່ນຄວນໃຊ້ກົນລະຍຸດທີ່ຍອມຮັບ-ຮູ້ຈັກດີ, ກວດສອບການປ້ອນຂໍ້ມູນເຂົ້າກັບປະເພດ, ຄວາມຍາວ ແລະຮູບແບບທີ່ຄາດໄວ້ [S2].

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

FixVibe ກວມເອົາການສີດ SQL ແລ້ວຜ່ານໂມດູນເຄື່ອງສະແກນ active.sqli ທີ່ມີປະຕູຮົ້ວ. ການສະແກນທີ່ເຮັດວຽກພຽງແຕ່ດໍາເນີນການຫຼັງຈາກການຢັ້ງຢືນຄວາມເປັນເຈົ້າຂອງໂດເມນແລະຢັ້ງຢືນ. ການກວດສອບໄດ້ລວບລວມຂໍ້ມູນຕົ້ນກໍາເນີດດຽວກັນ GET endpoints ທີ່ມີຕົວກໍານົດການສອບຖາມ, ກໍານົດການຕອບສະຫນອງພື້ນຖານ, ຊອກຫາຄວາມຜິດປົກກະຕິ boolean ສະເພາະຂອງ SQL, ແລະພຽງແຕ່ລາຍງານການຄົ້ນພົບຫຼັງຈາກການຢືນຢັນໄລຍະເວລາໃນທົ່ວຄວາມຍາວຊັກຊ້າຫຼາຍ. ການສະແກນບ່ອນເກັບມ້ຽນຍັງຊ່ວຍຈັບສາເຫດກ່ອນຫນ້ານັ້ນໂດຍຜ່ານ code.web-app-risk-checklist-backfill, ເຊິ່ງຊີ້ໃຫ້ເຫັນການໂທ SQL ດິບທີ່ສ້າງຂຶ້ນດ້ວຍການແຊກແຊງແມ່ແບບ.