يُعدّ استخدام طبقة المقابس الآمنة (SSL) على موقعك الإلكتروني طريقة مهمة للحفاظ على أمان المستخدمين وخصوصيتهم. ولكن تفعيل بروتوكول SSL ليس هو نهاية القصة: هناك العديد من الخطوات التي يمكنك اتّخاذها لتعزيز مستوى الأمان الذي يوفّره موقعك الإلكتروني، بدءًا من ضبط سمة Secure على ملفّات تعريف الارتباط إلى تفعيل الأمان المشدَّد لنقل البيانات باستخدام بروتوكول HTTP واستخدام سياسة أمان المحتوى ل قفل امتيازات موقعك الإلكتروني. ومع ذلك، قد يكون من الصعب أحيانًا نشر هذه الميزات القوية. لمساعدتك في طرح شكل أكثر صرامة من بروتوكول SSL، يتضمّن الإصدار 46 من Chrome ميزة تُعرف باسم "إعداد تقارير عن بروتوكول HPKP".
ماذا تعني كل هذه الاختصارات؟
يعتمد الأمان على الويب اليوم على شهادات طبقة المقابس الآمنة: وهي توقيعات تشفير تثبت هوية الموقع الإلكتروني. عندما يرسل المتصفّح طلبًا إلى عنوان URL مثل https://developers.google.com، يقدّم الخادم شهادة طبقة المقابس الآمنة، وإذا كانت الشهادة صالحة، يسمح المتصفّح بمتابعة الطلب ويعرض عنوان URL للموقع الإلكتروني مع قفل أخضر في شريط العناوين.
ما هي الشهادة الصالحة؟ لكي تكون الشهادة صالحة، يجب أن تكون موقَّعة من مرجع تصديق (CA) أو من شهادة أخرى موقَّعة من مرجع تصديق (يُعرف باسم مرجع تصديق وسيط). تأتي المتصفحات وأنظمة التشغيل مزوّدة بقائمة تضم عدة مئات من مراجع التصديق الموثوق بها لإصدار الشهادات. المشكلة هي أنّ أيًّا من مراجِع التصديق هذه يمكنها تلقائيًا إصدار شهادات لأي موقع إلكتروني. وإذا تم اختراق أيٍّ منها أو ظهرت فيه مشكلة، قد يؤدي ذلك إلى حدوث أضرار جسيمة على الويب بأكمله.
أدخِل HTTP Public Key Pinning أو HPKP. يسمح هذا المعيار للمواقع الإلكترونية بإرسال عنوان HTTP يوجّه المتصفّح إلى تذكُّر (أو "تثبيت") أجزاء من سلسلة شهادة SSL. سيرفض المتصفح بعد ذلك عمليات الربط اللاحقة التي لا تتطابق مع العلامات التي تلقّاها سابقًا. في ما يلي مثال على عنوان HPKP:
Public-Key-Pins:
pin-sha256="d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM=";
pin-sha256="LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=";
max-age=259200
يحدّد هذا العنوان تجزئتَين للشهادة بصفتهما رقمَي تعريف. أحدهما عبارة عن تجزئة
لشهادة في سلسلة شهادات الموقع الإلكتروني، والآخر هو رقم تعريف شخصي احتياطي أو تجزئة
لشهادة يمكن للموقع الإلكتروني استخدامها في حال الحاجة إلى تبديل
شهادته. يتضمّن العنوان أيضًا قيمة max-age
. بعد مرور هذا العدد من
الثواني، سيُنسى المتصفّح رقم التعريف الشخصي.
لمزيد من المعلومات عن بروتوكول HPKP بشكل عام، يمكنك الاطّلاع على المواصفات أو مشاركة المدوّنة الرائعة التي نشرها مطوّر Chrome، "كريس بالمر".
هل عليّ تفعيل سياسة HPKP الآن؟
ليس بالضرورة. عند نشر سياسة HPKP، من السهل جدًا ارتكاب خطأ و
أن يؤدي ذلك عن طريق الخطأ إلى حجب الخدمة في موقعك الإلكتروني. إذا ثبّت موقعك الإلكتروني بمجموعة واحدة من الشهادات ثم اضطررت إلى نشر مجموعة جديدة، لن يتمكّن المستخدمون الذين شاهدوا رقم التعريف من
الوصول إلى موقعك الإلكتروني إلى أن تنتهي صلاحيته (استنادًا إلى قيمة max-age
في
العنوان).
وبما أنّه من الصعب ضبط إعدادات هذا البروتوكول بشكل صحيح، يتم استخدامه في الوقت الحالي بشكل أساسي من قِبل عدد قليل من المواقع الإلكترونية المرموقة الحساسة من حيث الأمان. إذا قرّرت تفعيل سياسة HPKP، يجب البدء بقيمة max-age قصيرة جدًا وزيادتها تدريجيًا إذا لم تواجه أي مشاكل.
ما هو الغرض من إعداد تقارير عن بروتوكول HPKP وكيف تساعد هذه التقارير؟
ميزة إعداد تقارير عن بروتوكول HPKP، التي تم تضمينها في الإصدار 46 من Chrome، هي ميزة يمكنك استخدامها لرصد الإعدادات الخاطئة أثناء طرح بروتوكول HPKP.
أولاً، يمكنك البدء بإرسال عنوان Public-Key-Pins-Report-Only
بدلاً من
عنوان Public-Key-Pins:
Public-Key-Pins-Report-Only:
max-age=2592000;
pin-sha256="E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=";
pin-sha256="LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=";
report-uri="https://example.net/pkp-report"
عندما يُرسِل موقعك الإلكتروني عنوانًا من هذا النوع، سيتحقّق Chrome مما إذا كان الاتصال الحالي
يتطابق مع العناصر المثبّتة، ويُرسِل تقريرًا إلى report-uri
في حال عدم تطابقهما. لن يحظر Chrome
الطلبات استنادًا إلى العناصر المثبّتة في عنوان "للإبلاغ فقط"، لذا هذه طريقة آمنة
لتجربة ميزة "مفتاح التشفير العام للموقع" ومعرفة ما إذا كانت تتسبب في مشاكل للمستخدمين بدون تعريض
موقعك الإلكتروني لخطر هجمات حجب الخدمة.
يُرجى العلم أنّ عنوان "للإبلاغ فقط" لا ينطبق إلا على الطلب الذي تم استلامه. لا يحفظ المتصفّح دبابيس "الإبلاغ فقط" كما يحفظ دبابيس الموقع الجغرافي الحقيقية. يتيح لك ذلك اختبار الإعدادات بدون القلق بشأن تخزين القيم الخاطئة في ملفّات midler في متصفّحات المستخدمين، ويمكنك طرح الميزة بشكل تدريجي (على سبيل المثال، على مورد واحد فقط) لتجنّب إغراق خادمك بالتقارير.
عند طرح العنوان Public-Key-Pins
الحقيقي لبدء فرض العلامات،
يمكنك تضمين قيمة report-uri في هذا العنوان أيضًا، لكي
تستمر في تلقّي التقارير في حال حدوث أي مشاكل.
ما الذي يُدرج في تقرير انتهاك بروتوكول HPKP؟
تقرير انتهاك بروتوكول HPKP هو رسالة بتنسيق JSON يتم إرسالها في طلب POST عبر HTTP إلى report-uri
الذي تم إعداده. يمكن العثور على قائمة الحقول في
المواصفات، ولكن سأبرز هنا حقلَين من
الحقول: served-certificate-chain
وvalidated-certificate-chain
. تمثل
served-certificate-chain
الشهادة كما تلقّاها Chrome بالضبط عند
إعداد اتصال طبقة المقابس الآمنة للطلب. من ناحية أخرى، validated-certificate-chain
هي السلسلة التي أعاد Chrome إنشاؤها عند محاولة التحقّق من صحة شهادة
الخادم، والتي يمكن أن تكون مختلفة عن
served-certificate-chain
. يُجري العملاء المختلفون عمليات التحقّق من الشهادة بطرق
مختلفة، وقد يكون ذلك سببًا شائعًا لإعدادات HPKP غير الصحيحة. يُرجى
التأكّد من وضع علامة في هذا الحقل إذا كنت تتلقّى تقارير غير متوقّعة.
ملاحظة أخيرة
في حال نشر تقارير HPKP، تذكَّر أنّ Chrome يُجري عملية التحقّق من رقم التعريف الشخصي لجميع الطلبات، بما في ذلك طلبات إرسال التقارير. لذلك، إذا كنت قد فعّلت علامة HPKP لموقعك الإلكتروني، من المحتمل أن تريد إرسال تقارير HPKP إلى نطاق مختلف لم تُثبِّته. بخلاف ذلك، سيؤدي انتهاك العلامة المرجعية على موقعك الإلكتروني إلى إرسال تقرير إلى النطاق نفسه، ما سيؤدي أيضًا إلى رفض انتهاك العلامة المرجعية، وبالتالي لن تتلقّى التقرير.
إذا لم يكن لديك نطاق آخر متاح، يمكنك بدلاً من ذلك تجربة خدمة مثل report-uri.io التي تعالج تقارير الانتهاكات نيابةً عنك.