Brief #11 · Security

Secure Webhook System (HMAC)

Easy⏱ 5-8 ঘণ্টাশীঘ্রই

'Payment succeeded' webhook নাও শুধু তখনই, যখন সেটা সত্যিই তোমার provider থেকে এসেছে, আর শুধু একবার।

Outline free · tracking সহ বানাতে Pro লাগবে

SBriefTeam এর পক্ষ থেকে

Payment সফল হলে আমাদের payment provider /webhooks/payment ডাকে, আর আমরা order টা paid দেখাই। এখন যে কেউ URL টা পেলে একটা curl command দিয়ে যেকোনো order paid করে দিতে পারে। Endpoint টা এমন করো যাতে নকল, বদলানো বা আবার পাঠানো কিছুই না নিয়ে।

যা বানাবে

  1. 1একটা sender, যেটা shared secret দিয়ে timestamp.body কে HMAC-SHA256 এ সই করে।
  2. 2একটা receiver, যেটা constant-time comparison দিয়ে সই check করে।
  3. 3৫ মিনিটের বেশি পুরোনো message বাদ দাও, আর replay আটকাতে event ID মনে রাখো।
  4. 4দুইটা চালু secret রাখো, যাতে downtime ছাড়াই বদলানো যায়।
  5. 5দ্রুত উত্তর দাও, আর event টা পেছনে process করো।

ধাপে ধাপে walkthrough

Walkthrough শীঘ্রই আসছে

এই project এর ধাপে ধাপে walkthrough, প্রতিটা ধাপে আসল output সহ, এখনো লেখা হচ্ছে। ততক্ষণ brief পড়ে নিজে চেষ্টা করতে পারো; walkthrough তৈরি হলে tracking চালু হবে।

শেষ হবে যখন

  • Test প্রমাণ করে নকল, বদলানো আর আবার পাঠানো, তিনটা message ই বাদ পড়ে।
  • সই check হয় JSON parse করার আগে, raw body এর ওপর।
  • Secret বদলালে একটা delivery ও fail করে না।
  • README তে curl আর openssl দিয়ে check করার নিয়ম।

আরো এগোতে চাইলে

  • Sender এর দিকে exponential backoff দিয়ে delivery retry করো।
  • বারবার fail করা event এর জন্য একটা dead-letter queue।

দেখিয়ে দাও