ຂ້າມໄປຫາເນື້ອຫາ

ກວດລາຍເຊັນ Webhook

ຊອກຫາສາເຫດທີ່ webhook "ກວດບໍ່ຜ່ານ": ກວດລາຍເຊັນຂອງ Meta/WhatsApp, Stripe, GitHub ແລະ Telegram ດ້ວຍ secret ແລະ body ດິບຂອງທ່ານ.

ເຄື່ອງມືຂອງພວກເຮົາເຮັດວຽກໃນບຣາວເຊີຂອງທ່ານ — ສິ່ງທີ່ທ່ານວາງ ຫຼື ເປີດ ບໍ່ຖືກອັບໂຫຼດມາຫາພວກເຮົາ ແລະ ພວກເຮົາບໍ່ເກັບໄວ້.

ຜູ້ສົ່ງ

Meta ເຊັນ body ດິບດ້ວຍ App Secret ຂອງທ່ານ: X-Hub-Signature-256 = sha256= + HMAC-SHA256 ແບບ hex.

ກວດໃນເຄື່ອງດ້ວຍ WebCrypto. ແນະນຳໃຫ້ໃຊ້ secret ສຳລັບທົດສອບ ແລະ ປ່ຽນ secret ຈິງທຸກອັນທີ່ທ່ານເຄີຍວາງໃສ່ບ່ອນໃດໜຶ່ງ.

ວາງ body ໃຫ້ຄືກັບທີ່ໄດ້ຮັບທຸກຕົວ. ກ່ອງຂໍ້ຄວາມຈະປ່ຽນ CRLF ເປັນ LF — ຖ້າໄບຕ໌ສຳຄັນ ກະລຸນາໂຫຼດຈາກໄຟລ໌.

0 ໄບຕ໌

ຂໍ້ຜິດພາດທີ່ພົບເລື້ອຍ

  • ກວດ body ທີ່ຖືກແປງຄືນໃໝ່: JSON.parse ແລ້ວ JSON.stringify ຈະປ່ຽນຍະຫວ່າງ, ລຳດັບ key ແລະ escape. ກະລຸນາອ່ານໄບຕ໌ດິບ (ເຊັ່ນ express.raw(), request.body() ກ່ອນ parse).
  • ເພີ່ມ ຫຼື ຕັດການຂຶ້ນແຖວທ້າຍ ຫຼື ຍະຫວ່າງ ເວລາສຳເນົາ, ບັນທຶກ log ຫຼື ອ່ານ body.
  • ຖອດລະຫັດ body ຜິດ encoding — ຂໍ້ຄວາມທີ່ບໍ່ແມ່ນ ASCII ເຊັ່ນພາສາລາວ ຕ້ອງຄົງເປັນໄບຕ໌ UTF-8.
  • ໃຊ້ secret ຜິດ: Meta ໃຊ້ App Secret (ບໍ່ແມ່ນ verify token ຫຼື access token); Stripe ໃຊ້ secret whsec_ ຂອງ endpoint ເຊິ່ງແຕກຕ່າງກັນລະຫວ່າງໂໝດທົດສອບກັບໂໝດຈິງ ແລະ ລະຫວ່າງ endpoint.
  • ທຽບກັບ header ຜິດໂຕ (ເຊັ່ນ X-Hub-Signature ແບບ SHA-1 ເກົ່າ) ຫຼື ລືມຄຳນຳໜ້າ "sha256=".
  • Stripe: ໂມງເຊີບເວີບໍ່ກົງ ຫຼື ສົ່ງເຫດການເກົ່າຊ້ຳ ເຮັດໃຫ້ກວດ timestamp ບໍ່ຜ່ານ ເຖິງວ່າລາຍເຊັນຖືກຕ້ອງ.
  • Telegram: secret_token ໃຊ້ໄດ້ສະເພາະ A–Z, a–z, 0–9, _ ແລະ - ບໍ່ເກີນ 256 ຕົວອັກສອນ.
ເຄື່ອງມືຟຣີທັງໝົດ