الأمان
تقرّر صفحة الأمان الخاصة بمفتاح الموقع مدى صعوبة التحدّي وأيّ الطلبات يُسمح لها ببلوغه. القيم الافتراضية وسط معقول؛ هذه الصفحة عن متى تبتعد عنها، وفي أي اتّجاه.
ابدأ هنا
ينبغي لمعظم المواقع ترك القيم الافتراضية وشأنها. امتدّ إلى المقابض أدناه حين يكون لديك سبب:
- أنت تحت إساءة استخدام نشطة، أو النموذج عالي القيمة (التسجيلات، المدفوعات، إعادة تعيين كلمة المرور): ارفع الحماية. ارفع الصعوبة، وارفع مستوى التعمية، وشغّل حظر المتصفّحات المؤتمتة. تقايض قليلًا من حوسبة الزائر وبعض وحدة معالجة الخادم بجدار أعلى كثيرًا.
- السرعة والتحويل هما الأهمّ، والمخاطرة منخفضة (صندوق نشرة بريدية على صفحة تسويقية): أبقِ الحماية خفيفة. اترك الصعوبة منخفضةً وتحدّيات لكل طلب على 1 كي يكون التحدّي خفيفًا كالريشة على هاتف رخيص.
بقية هذه الصفحة كل مقبض والاتّجاه الذي تديره به.
اشترِط لعبة
أقوى ضابط هنا هو اشتراط لعب الزائر لعبة كي يمرّ، لا مجرّد اجتياز الفحص الخلفي الهادئ. شغّل اشتراط لعبة للتحقّق، هنا على صفحة الأمان، وعلى كل زائر اجتياز إحدى الألعاب المسجّلة على هذا المفتاح. يختار الخادم أيّ لعبة يحصل عليها كل زائر، فلا يمكن تخطّيها أو استبدالها.
تسجّل الألعاب التي يحقّ لمفتاح استخدامها، وذلك أيضًا حيث تشرح البوّابة نفسها كاملةً، على صفحة الألعاب وبوّابة اللعبة الخاصة بالمفتاح. لا يمكنك تشغيل البوّابة حتى تُسجَّل لعبة واحدة على الأقل. تركها مُطفأة هو الخيار الأقلّ أمانًا: يمكن المرور على المفتاح دون لعب لعبة.
Proof of work: الصعوبة وتحدّيات لكل طلب
يُرغم proof of work المتصفّح على حلّ لغز صغير كي يصير الإساءة بالجملة باهظًا (انظر proof of work).
- الصعوبة (من 1 إلى 8) تضبط مدى صعوبة كل لغز. الأعلى يكلّف المهاجم أكثر، لكنه يكلّف أيضًا جهاز الزائر أكثر، وهو ما تشعر به الهواتف المتواضعة عند أعلى المدى. ابدأ بالافتراضي وارفعها فقط إن رأيت إساءة فعلًا.
- تحدّيات لكل طلب (من 1 إلى 500) تطلب عدّة حلول دفعة واحدة، مضاعفةً الكلفة. اتركها على 1 ما لم يكن لديك سبب محدّد لتكديس المزيد.
يحلّ المتصفّح هذه الألغاز في Web Worker، فيجب أن تسمح سياسة Content-Security-Policy لصفحتك بـ blob: للعمّال (worker-src blob:)؛ هذه مطلوبة. والسماح بـ 'wasm-unsafe-eval' في script-src يتيح إضافةً تشغيل الحلّال كـ WebAssembly سريع، لكن ذلك اختياري: بدونه يرتدّ الحلّال إلى تنفيذ JavaScript خالص أبطأ داخل العامل نفسه ويظلّ التحقّق عاملًا. انظر عزل اللعبة لسياسة الصفحة المضيفة كاملةً.
الرصد: مستوى التعمية وحظر المتصفّحات المؤتمتة
يشغّل الرصد برنامجًا صغيرًا في متصفّح الزائر للتحقّق من أن متصفّحًا حقيقيًّا، لا سكربتًا، حلّ التحدّي (انظر الرصد). إنه مفعّل افتراضيًّا وهو الطبقة الوحيدة التي تميّز متصفّحًا حقيقيًّا عن آخر مؤتمت.
- يمكن إطفاء تحدّي الرصد لكل مفتاح. اتركه مفعّلًا لكل موقع تقريبًا. أطفئه فقط إن كانت الصفحة التي تضمّن أداتك تشغّل Content-Security-Policy لا تستطيع السماح بـ
'unsafe-eval'(يحتاجه برنامج الرصد، انظر أدناه). مع إطفائه، لم يعد المفتاح قادرًا على رصد المتصفّحات المؤتمتة، وإن ظلّ proof of work وأي لعبة مشترَطة عاملَين، ويتوقّف الإعدادان أدناه عن الانطباق. - مستوى التعمية (من 1 إلى 10) هو مدى صعوبة الهندسة العكسية للبرنامج في المتصفّح. الأعلى أقوى لكنه يستخدم وحدة معالجة خادم أكثر. الافتراضي صحيح لمعظم المواقع؛ ارفعه إن كنت هدفًا متكرّرًا لمهاجم موجَّه.
- يرفض حظر المتصفّحات المؤتمتة عملاء headless وWebDriver المرصودين رفضًا قاطعًا. شغّله إن لم تلمس نموذجك أي أتمتة مشروعة أبدًا. واتركه مُطفأً إن كنت تتوقّع روبوتات مشروعة (مراقبتك الخاصة، تكاملات الشركاء، أدوات الوصول)، لأنه سيحجبها هي أيضًا.
Content-Security-Policy
يشغّل برنامج الرصد eval في متصفّح الزائر، فيجب أن تسمح الصفحة التي تضمّن أداتك بـ 'unsafe-eval' في script-src خاصتها. هذا متطلّب CSP الصارم الوحيد ولا بديل له: إن حُجب 'unsafe-eval'، انتهت مهلة التحقّق وأظهر طرفية المتصفّح [cap] Instrumentation failed. أمامك خياران: السماح بـ 'unsafe-eval' على الصفحات التي تستضيف الأداة، أو إطفاء تحدّي الرصد (أعلاه) لإزالة المتطلّب. القائمة الكاملة لما يحتاجه CSP الصفحة المضيفة موجودة في عزل اللعبة.
الترويسات المطلوبة
يمكنك اشتراط أن يحمل كل طلب ترويسة بعينها. معظم المواقع لا تحتاج هذا؛ إنه مفيد حين يرسل عميلك الخاص دائمًا ترويسة يمكنك التحكيم بها، كمرشّح إضافي رخيص.
ما لا يمكنك اشتراطه هو الترويسات التي يزيلها Caputchin للخصوصية قبل أن يبلغ الطلب التحقّق أصلًا. إنها تعرّف الزائر، وموقف Caputchin ألّا يجمع بيانات لكل زائر، فيُسقطها عند حدّ المنصّة:
| الترويسة المُزالة | لِمَ تُسقَط |
|---|---|
cf-connecting-ip | IP الزائر، يضبطه Cloudflare. لا يعبر الحدّ أبدًا، فلا يخزّنه Caputchin ولا يفحص به. |
x-forwarded-for | IP الزائر كما يُرى عبر الوسطاء. السبب نفسه. |
x-real-ip | IP الزائر من وسطاء أعلى المجرى. السبب نفسه. |
user-agent | سلسلة User-Agent للزائر، التي تعرّف متصفّحه وجهازه. |
sec-ch-ua* (كل تلميح عميل Sec-CH-UA: sec-ch-ua، وsec-ch-ua-platform، وsec-ch-ua-mobile، والبقية) | الصيغة المبنيَّة لـ User-Agent. حدّ الخصوصية نفسه. |
اشتراط إحداها سيحجب كل طلب، لأنها لا تصل أبدًا، فترفض المنصّة ذلك الإعداد بدل أن تدعك تعطّب المفتاح.
حدّ المعدّل وأصول CORS
- أقصى عدد طلبات في الثانية يحدّ سرعة قبول المفتاح للطلبات. ارفعه إن كنت حقًّا عالي حركة المرور؛ واخفضه لخنق مفتاح يُطرَق بعنف.
- أصول CORS هي قائمة أصولك المسموح بها، مفروضةً على الخادم قبل أن يعمل اللغز أصلًا. اتركها فارغةً أثناء اختبارك من
localhost؛ وقبل أن تنطلق، أضف أصولك الحقيقية كي لا يستخدم المفتاح سوى موقعك أنت.
انظر أيضًا
- الألعاب وبوّابة اللعبة لتسجيل الألعاب واشتراط واحدة للتحقّق.
- مفاتيح المواقع لبقية المفتاح.
- الإحصاءات والجلسات لترى ما إذا كانت إعداداتك توقف حركة المرور الصحيحة.