توقيع HMAC لطلبات webhook
وقّع الرسالة mensaje بالمفتاح clave-secreta عبر HMAC-SHA-256 لتحصل على توقيع يبدأ بالرمز fd7e5bf1 لا يستطيع إعادة إنتاجه إلا من يملك المفتاح نفسه. وتحقق بالطريقة نفسها من التواقيع التي تصلك لكشف الرسائل المعدّلة. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
يقارن النظام المستقبل التوقيع المرسَل مع توقيع يحسبه بنفس المفتاح، فإن تطابقا وثق بالرسالة.
ماذا يثبت التوقيع بالمفتاح
رمز HMAC بصمة لرسالة تُحسب بسر يتشاركه الطرفان. أما التجزئة العادية فيستطيع أي شخص حسابها، لذا فهي تثبت فقط أن البيانات لم تتلف. ويثبت HMAC فوق ذلك من أنشأه: فمن دون السر لا يستطيع أحد صنع توقيع يجتاز التحقق. وتختار التجزئة الأساسية بين SHA-256 وSHA-384 وSHA-512، وتتسلم التوقيع نصًا ست عشريًا أو بصيغة base64، أو تطلب التحقق من توقيع وصلك فتحصل على جواب صالح أو غير صالح.
أين تُستخدم تواقيع HMAC
الروابط الموقعة مثال شائع: فرمز HMAC محسوب على العنوان وتاريخ انتهاء صلاحيته يجعل روابط التنزيل أو إعادة تعيين كلمة المرور مكشوفة لأي عبث. وتستخدمه طوابير الرسائل أيضًا كي يرفض المستلم كل ما عُدّل في الطريق، وتعتمد عليه الخدمات للوثوق بالإشعارات التلقائية القادمة من نظام آخر. وقد صيغت هذه الطريقة في المعيار RFC 2104 عام 1996 ثم اعتُمدت باسم FIPS 198.
كيف يُحسَب التوقيع ويُقارَن
يأخذ التوقيع محتوى الرسالة والمفتاح السرّي، ويمرّرهما عبر دالة تجزئة مثل SHA-256 لإنتاج سلسلة محارف فريدة. عند استقبال الطلب، يعيد نظامك حساب التوقيع بنفس الطريقة ويقارنه حرفًا بحرف مع التوقيع الوارد في ترويسة الطلب؛ أي اختلاف — حتى محرف واحد — يعني رفض الطلب فورًا.
توليد وتحقق من داخل المتصفح
تسمح الأداة بلصق محتوى الرسالة والمفتاح السرّي لحساب التوقيع مباشرة، مفيد لمطور يختبر تكاملًا يبنيه بنفسه قبل ربطه بنظام إنتاجي فعلي. المعالجة بالكامل تجري محليًا؛ لا يُرسَل المفتاح السرّي إلى أي خادم عند استخدام هذا الوضع.
حالات الاستخدام
اختبار تكامل قبل الإطلاق
يبني مطور مستقل تكاملًا جديدًا بين نظامين، ويستخدم الأداة يدويًا لحساب توقيعات تجريبية والتأكد أن منطق التحقق في الطرف المستقبل يعمل كما هو متوقع قبل ربطه فعليًا.
حماية نظام حجوزات من طلبات مزيّفة
يضيف فريق تقني في مؤسسة النخيل للمقاولات تحققًا من توقيع HMAC على نقطة استقبال حجوزات خارجية، بعد رصد محاولات إرسال طلبات لا تحمل توقيعًا صحيحًا.
الأسئلة الشائعة
ما الفرق بين HMAC والتشفير العادي؟
HMAC لا يخفي محتوى الرسالة، بل يثبت أنها لم تُعدَّل وأنها صادرة عن طرف يعرف المفتاح السرّي؛ التشفير هدفه إخفاء المحتوى نفسه.
أين أحتفظ بالمفتاح السرّي بأمان؟
في متغيرات بيئة النظام، لا في الكود المصدري مباشرة؛ الأداة لا تخزّن أي مفتاح تُدخله.
هل خوارزمية SHA-256 وحدها متاحة؟
هي الأكثر استخدامًا وتدعمها الأداة افتراضيًا، مع خيارات أخرى شائعة حسب ما يطلبه النظام الذي تتكامل معه.
هل يُرسَل المفتاح السرّي إلى خادمكم؟
عند الاستخدام من المتصفح مباشرة، لا؛ الحساب يجري محليًا.
هل تعمل الأداة من الجوال؟
نعم، صفحة ويب عادية تعمل من متصفح الجوال بنفس الطريقة على الحاسوب.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/hmac \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"payload","secret":"s3cr3t"}'const res = await fetch("https://api.kit.forhosting.com/dev/hmac", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "payload",
"secret": "s3cr3t"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/hmac",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "payload",
"secret": "s3cr3t"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/hmac", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"payload","secret":"s3cr3t"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"payload","secret":"s3cr3t"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/hmac", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "payload",
"secret": "s3cr3t"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.hmac",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
أداة تولّد توقيع HMAC — رمز مصادقة الرسائل المرتبط بمفتاح سرّي — للتحقق أن رسالة أو طلب webhook وصل من مصدره الحقيقي دون تعديل في الطريق.
لماذا لا يكفي رابط webhook سري وحده
توقيع HMAC يضيف طبقة تحقق: كل طلب حقيقي يحمل توقيعًا محسوبًا من محتوى الرسالة نفسها بمفتاح سرّي يعرفه الطرفان فقط، فلا يستطيع مرسل زائف تزوير التوقيع دون معرفة المفتاح. من يعرف رابط webhook فقط يستطيع إرسال طلبات مزيّفة تنتحل صفة النظام الأصلي، فيقبلها خادمك دون تمييز.
التحقق الآلي عبر الـAPI
لنظام يستقبل عشرات طلبات webhook يوميًا من مزودي دفع أو خدمات خارجية، يتيح الـAPI التحقق من كل طلب وارد تلقائيًا بسعر $0.002 لكل عملية، فيرفض النظام أي طلب يحمل توقيعًا غير صحيح قبل أن يصل إلى منطق التطبيق الحساس.
حالات التكامل
التحقق من إشعارات مزوّد دفع
يستقبل نظام شركة الخليج الرقمية إشعارات دفع من مزوّد خارجي عبر webhook، ويتحقق من توقيع HMAC المرفق مع كل إشعار قبل تحديث حالة الطلب في قاعدة البيانات.
أسئلة تقنية
كم تكلفة التحقق الآلي من طلبات webhook؟
$0.002 لكل عملية تحقق عبر الـAPI؛ التوليد اليدوي من المتصفح لاختبار تكامل يبقى مجانيًا.