يُعدّ استخدام طبقة المقابس الآمنة (SSL) على موقعك الإلكتروني طريقة مهمة للحفاظ على أمان المستخدمين وخصوصيتهم. ولكن تفعيل طبقة المقابس الآمنة ليس نهاية المطاف، فهناك العديد من الخطوات التي يمكنك اتخاذها لتعزيز مستوى الأمان الذي يوفّره موقعك الإلكتروني، بدءًا من ضبط سمة الأمان في ملفات تعريف الارتباط، مرورًا بتفعيل الأمان المشدَّد لنقل البيانات باستخدام بروتوكول HTTP، وصولاً إلى استخدام سياسة أمان المحتوى لتقييد امتيازات موقعك الإلكتروني. ومع ذلك، قد يكون نشر هذه الميزات الفعّالة أمرًا صعبًا في بعض الأحيان. لمساعدتك في طرح شكل أكثر صرامة من طبقة المقابس الآمنة (SSL)، يتضمّن الإصدار 46 من Chrome ميزة تُسمى "إعداد تقارير HPKP".
ماذا تعني كل هذه الاختصارات؟
يعتمد الأمان على الويب اليوم على شهادات طبقة المقابس الآمنة (SSL): توقيعات مشفّرة تثبت هوية الموقع الإلكتروني. عندما يرسل المتصفّح طلبًا إلى عنوان URL مثل https://developers.google.com، يقدّم الخادم شهادة طبقة المقابس الآمنة (SSL)، وإذا كانت الشهادة صالحة، يسمح المتصفّح بمتابعة الطلب ويعرض عنوان URL للموقع الإلكتروني مع قفل أخضر في شريط العناوين.
ولكن ما هي الشهادة الصالحة؟ لكي يتم اعتبار الشهادة صالحة، يجب أن تكون موقَّعة من قِبل مرجع تصديق (CA) أو من قِبل شهادة أخرى موقَّعة من قِبل مرجع تصديق (يُعرف باسم مرجع تصديق وسيط). تتضمّن المتصفحات وأنظمة التشغيل قائمة بمئات مراجع التصديق الموثوق بها لإصدار الشهادات. لكن المشكلة تكمن في أنّه يمكن لأي من مراجع التصديق هذه إصدار شهادات لأي موقع إلكتروني تلقائيًا. إذا تم اختراق أي منها أو إساءة استخدامها، فقد يكون ذلك مدمرًا للويب بأكمله.
أدخِل تثبيت المفتاح العام لبروتوكول HTTP أو 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 في الغالب من قِبل عدد قليل من المواقع الإلكترونية البارزة والحساسة للأمان في الوقت الحالي. إذا قررت تفعيل HPKP، عليك البدء بقيمة قصيرة جدًا للحد الأقصى للعمر وزيادتها تدريجيًا إذا لم تواجه أي مشاكل.
ما هي تقارير 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 مطلقًا الطلبات استنادًا إلى الرموز المثبّتة في عنوان Report-Only، لذا تُعدّ هذه طريقة آمنة لتجربة HPKP ومعرفة ما إذا كانت تسبّب مشاكل للمستخدمين بدون المخاطرة بحجب الخدمة عن موقعك الإلكتروني.
يُرجى العِلم أنّ عنوان Report-Only ينطبق فقط على الطلب الذي يتم تلقّيه فيه. لا يتذكّر المتصفّح دبابيس "إعداد التقارير فقط" كما يفعل مع الدبابيس الحقيقية. يتيح لك ذلك اختبار الإعدادات بدون القلق بشأن تخزين قيم غير صالحة في ذاكرة التخزين المؤقت في متصفّحات المستخدمين، ويمكنك طرحها بشكل تدريجي (على سبيل المثال، على مورد واحد فقط) لتجنّب إغراق الخادم بالتقارير.
عند طرح عنوان Public-Key-Pins الحقيقي لبدء فرض تثبيت الشهادات،
يمكنك تضمين قيمة report-uri في هذا العنوان أيضًا، حتى
تستمر في تلقّي التقارير في حال حدوث أي مشاكل.
ما الذي يتضمّنه تقرير انتهاك HPKP؟
تقرير انتهاك HPKP هو رسالة JSON يتم إرسالها في طلب POST عبر HTTP إلى report-uri الذي تم ضبطه. يمكن العثور على قائمة الحقول في
المواصفات، ولكن سأُبرز اثنين
منها هنا: served-certificate-chain وvalidated-certificate-chain. served-certificate-chain هي الشهادة نفسها التي تلقّاها Chrome عند إعداد اتصال طبقة المقابس الآمنة (SSL) للطلب. من ناحية أخرى، validated-certificate-chain هي السلسلة التي أعاد Chrome إنشاءها عند محاولة التحقّق من صحة شهادة الخادم، والتي يمكن أن تختلف عن served-certificate-chain. تتحقّق برامج العميل المختلفة من صحة الشهادات بطرق مختلفة، ويمكن أن يكون ذلك سببًا شائعًا في حدوث أخطاء في إعدادات HPKP. تأكَّد من مراجعة هذا الحقل إذا كنت تتلقّى تقارير غير متوقّعة.
هناك مشكلة أخيرة
في حال نشر تقارير HPKP، تذكَّر أنّ Chrome يتحقّق من التثبيت لجميع الطلبات، بما في ذلك طلبات إرسال التقارير. لذلك، إذا كنت قد نشرت HPKP لموقعك الإلكتروني، قد ترغب في إرسال تقارير HPKP إلى نطاق مختلف لم تثبّته. وإلا، ستؤدي مخالفة التثبيت على موقعك الإلكتروني إلى إرسال تقرير إلى النطاق نفسه، ما سيؤدي أيضًا إلى تعذُّر مخالفة التثبيت، وبالتالي لن تتلقّى التقرير.
إذا لم يكن لديك نطاق آخر، يمكنك بدلاً من ذلك تجربة خدمة مثل report-uri.io التي تعالج تقارير الانتهاكات نيابةً عنك.