Webhook નું Authentication કરવું એ તેનું Validation કરવું નથી
ઘણા ડેવલપર્સ પ્રોડક્શનમાં એક જોખમી બગ (bug) મોકલી દે છે. તેઓ authentication અને validation વચ્ચે ભૂલ કરે છે.
Authentication નો અર્થ છે કે સંદેશ સાચા પ્રોવાઈડર પાસેથી આવ્યો છે. Validation નો અર્થ છે કે સંદેશની અંદરનો ડેટા સાચો છે.
જો તમે ફક્ત પહેલું પગલું જ કરો છો, તો તમે નાણાકીય નુકસાન વેઠશો.
તાજેતરની WordPress vulnerability (CVE-2026-9189) આ ભૂલ દર્શાવે છે. Contact Form 7 PayPal અને Stripe Add-on પેમેન્ટની રકમ તપાસવામાં નિષ્ફળ રહ્યું હતું.
અહીં એક હુમલાખોર આનો કેવી રીતે ઉપયોગ કરે છે તે દર્શાવેલ છે:
- એક હુમલાખોર $2,000 નો ઓર્ડર બનાવે છે.
- હુમલાખોર $1 નું વાસ્તવિક પેમેન્ટ કરે છે.
- તેઓ ઇન્વોઇસ નંબરને $2,000 ના ઓર્ડર સાથે મેળ ખાતો સેટ કરે છે.
- PayPal $1 ના પેમેન્ટ માટે વાસ્તવિક, વેરિફાઇડ નોટિફિકેશન મોકલે છે.
- પ્લગઇન વેરિફાઇડ મેસેજ જુએ છે અને $2,000 ના ઓર્ડરને 'paid' તરીકે માર્ક કરે છે.
પ્લગઇને સંદેશ મોકલનાર (messenger) પર વિશ્વાસ કર્યો પરંતુ સંદેશ (message) ને અવગણ્યો.
આ ભૂલ કરશો નહીં. જ્યારે તમે webhooks હેન્ડલ કરો છો, ત્યારે આ પગલાં અનુસરો:
- signatures અથવા shared secrets નો ઉપયોગ કરીને મેસેજને Authenticate કરો.
- તમારી ડેટાબેઝમાં રહેલા ઓર્ડર સાથે રકમ અને કરન્સી (currency) મેળવો.
- મેળવનારનું ઇમેઇલ તમારા એકાઉન્ટ સાથે મેળ ખાય છે કે નહીં તે ચકાસો.
- ઓર્ડરને લિંક કરવા માટે server-side વેલ્યુનો ઉપયોગ કરો. ફક્ત payload માં મોકલવામાં આવેલા invoice ID પર વિશ્વાસ ન કરો.
- ડુપ્લીકેટ ટ્રાન્ઝેક્શન ID ને અવગણવા માટે idempotency નો ઉપયોગ કરો.
- તમામ વિનંતીઓ (requests) માટે TLS વેરિફિકેશન સક્રિય રાખો.
- Fail closed રાખો. જો કોઈ પણ ચેક નિષ્ફળ જાય, તો બધું જ અટકાવી દો.
જો તમે Contact Form 7 PayPal અને Stripe Add-on વર્ઝન 2.4.9 અથવા તેનાથી જૂનું વાપરો છો, તો તેને અત્યારે જ અપડેટ કરો. દરેક વણચૂકવેલ (unpaid) ઓર્ડર આ એક્સપ્લોઇટ (exploit) માટે લક્ષ્ય છે.
હંમેશા સંદેશ મોકલનારનું પ્રમાણીકરણ કરો, પછી ડેટા તપાસો.