2013-04-26 5 views

उत्तर

9

हमारे पास वेबहुक के लिए उपयोग की जाने वाली आईपी की एक श्रृंखला है, लेकिन वे स्केल कर सकते हैं (और संभवतः) बदल सकते हैं या नए पैमाने पर जोड़े जा सकते हैं। एक विकल्प है जो आप मैनडिल में जोड़े गए वेबहूक यूआरएल में एक क्वेरी स्ट्रिंग जोड़ना चाहते हैं, और फिर जब कोई पोस्ट आता है तो उस क्वेरी स्ट्रिंग की जांच करें ताकि आप इसे मैनरिल से आ सकें।

+0

अरे हाँ, अच्छा और कुशल विचार। दूसरों के लिए, यह मेटाडेटा जानकारी के बारे में है। यह एक जेटी है जिसे मैं अभी आपकी पोस्ट पसंद नहीं कर सकता :)। धन्यवाद – devside

+0

आईपी को धोखा नहीं दिया जा सकता है! – ankitjaininfo

+0

@ankitjaininfo इस प्रश्न पर ठोकर खाई और आपकी टिप्पणी ने मेरी जिज्ञासा पिक्चर की। मेरी पहली प्रवृत्ति "आसानी से नहीं" चीज थी। तब मुझे यह पोस्ट आईटी सिक्योरिटी स्टैक एक्सचेंज पर मिला: https://security.stackexchange.com/questions/14505/can-i-trust-the-source-ip-of-an-http-request। मुझे लगता है कि बेहतर 3 साल देर से, मुझे लगता है। – nageeb

17

प्रकार का बंदर के हस्ताक्षर HTTP प्रतिक्रिया हेडर में स्थित है: Authenticating-webhook-requests

अनुरोध हेडर खोजने में: X-Mandrill-Signature। यह हैशकोड का बेस 64 है, वेब-हुक कुंजी का उपयोग करके हस्ताक्षरित है। यह कुंजी केवल आपके वेबहूक के लिए गुप्त है।

0

205.201.136.0/16

मैं सिर्फ उन्हें अपने सर्वर के फ़ायरवॉल में श्वेत सूची में है।

2

बस स्थिरांक की जगह है और इस समारोह का उपयोग करें:

<?php 

function generateSignature($post) 
    { 
     $signed_data = WEB_HOOK_URL; 
     ksort($post); 
     foreach ($post as $key => $value) { 
      $signed_data .= $key; 
      $signed_data .= $value; 
     } 

     return base64_encode(hash_hmac('sha1', $signed_data, WEB_HOOK_AUTH_KEY, true)); 
    } 

//--- 

if (generateSignature($_POST) != $_SERVER['HTTP_X_MANDRILL_SIGNATURE']) { 
    //Invalid 
} 

?> 
1

प्रकार का बंदर के docs में वर्णित है, वे यदि अनुरोध वास्तव में उन लोगों से आया एक हस्ताक्षर की जाँच करने के प्रदान करते हैं। अनुरोध वहाँ कुछ ही कदम है निर्माण करने के लिए: अपने webhook की सटीक यूआरएल साथ

  1. शुरुआत (मन स्लैश और पैरामीटर)
  2. तरह कुंजी (एक प्रकार का बंदर के मामले में द्वारा पोस्ट चर, आप केवल एक होगा पोस्ट पैरामीटर: mandrill_events)
  3. अपने गुप्त कुंजी के साथ यूआरएल यूआरएल की कुंजी है और मूल्य जोड़ने, किसी भी सीमांकक
  4. HMAC के बिना (आप वेब इंटरफेस से कुंजी) है और यह बेस 64 प्राप्त कर सकते हैं।
  5. X-Mandrill-Signature हैडर

साथ परिणाम की तुलना यहां अजगर में एक नमूना कार्यान्वयन है:

import hmac, hashlib 

def check_mailchimp_signature(params, url, key): 
    signature = hmac.new(key, url, hashlib.sha1) 
    for key in sorted(params): 
     signature.update(key) 
     signature.update(params[key]) 
    return signature.digest().encode("base64").rstrip("\n") 
संबंधित मुद्दे