إذا لم تكن تعرف سياسة أمان المحتوى (CSP)، يمكنك الاطّلاع على المقالة مقدّمة عن أمان المحتوى السياسة هي نقطة انطلاق جيدة. يتناول هذا المستند نظرة أوسع نطاقًا على منصة الويب لسياسة CSP. سياسة CSP لتطبيق Chrome ليست مرنة.
تُعد CSP سياسةً تهدف إلى الحد من مشكلات البرمجة النصية على مستوى المواقع، ونحن جميعًا نعرف أن عمليات الانتقال بين المواقع البرمجة النصية سيئة. ولن نحاول إقناعك بأنّ سياسة CSP هي سياسة جديدة بسيطة وغير واضحة. هناك عمل ينطوي عليه؛ عليك تعلّم كيفية تنفيذ المهام الأساسية بشكل مختلف.
الغرض من هذا المستند هو إطلاعك على سياسة CSP المعنية بتطبيقات Chrome، وتعريفك ينبغي القيام به للالتزام بها، وكيف لا يزال بإمكانك القيام بهذه المهام الأساسية بطريقة أن تكون متوافقة مع سياسة CSP
ما هو سياسة CSP لتطبيقات Chrome؟
تمنعك سياسة أمان المحتوى لتطبيقات Chrome من إجراء ما يلي:
- لا يمكنك استخدام البرمجة النصية المضمّنة في صفحات تطبيق Chrome. تحظر القيود كلتا المجموعتين (
<script>
). ومعالجات الأحداث (<button onclick="...">
). - لا يمكنك الإشارة إلى أي موارد خارجية في أي من ملفات التطبيق (باستثناء الفيديو والصوت) الموارد). لا يمكنك تضمين موارد خارجية في إطار iframe.
- لا يمكنك استخدام طرق تعتمد على تقنية "تحويل السلسلة إلى JavaScript"، مثل
eval()
وnew Function()
.
ويتم تنفيذ ذلك من خلال القيمة التالية للسياسة:
default-src 'self';
connect-src * data: blob: filesystem:;
style-src 'self' data: 'unsafe-inline';
img-src 'self' data:;
frame-src 'self' data:;
font-src 'self' data:;
media-src * data: blob: filesystem:;
لا يمكن أن يشير تطبيق Chrome إلا إلى النصوص البرمجية والكائنات داخل تطبيقك، باستثناء الوسائط الملفات (يمكن أن تشير التطبيقات إلى الفيديو والصوت خارج الحزمة). تساعدك إضافات Chrome على الاسترخاء سياسة أمان المحتوى التلقائية ولن تفعل تطبيقات Chrome ذلك.
كيفية الالتزام بسياسة CSP
يجب أن تكون جميع رموز JavaScript وجميع الموارد محلية (يتم تجميع كل العناصر في تطبيق Chrome).
"ولكن بعد ذلك كيف يمكنني..."
من المحتمل جدًا أنك تستخدم مكتبات النماذج وأن العديد منها لن يعمل مع سياسة CSP. قد تحتاج أيضًا إلى الوصول إلى موارد خارجية في تطبيقك (الصور الخارجية والمحتوى من المواقع الإلكترونية).
استخدام مكتبات النماذج
استخدم مكتبة تقدم نماذج مجمعة مسبقًا وتكون جاهزًا. لا يزال بإمكانك استخدام مكتبة لا توفر تجميعًا مسبقًا، لكنها ستتطلب بعض الجهد من جانبك وهناك قيود.
ستحتاج إلى استخدام وضع الحماية لعزل أي محتوى تريد "تقييمه" الأشياء إليه. يعزّز وضع الحماية سياسة أمان المحتوى (CSP) على المحتوى الذي تحدده. إذا كنت ترغب في استخدام متصفح Chrome القوي في تطبيق Chrome، لا يمكن للمحتوى الذي تم وضع الحماية له أن يتفاعل مباشرةً مع واجهات برمجة التطبيقات هذه (راجع وضع الحماية على المحتوى المحلي).
الوصول إلى الموارد عن بُعد
يمكنك جلب المراجع البعيدة من خلال XMLHttpRequest
وعرضها عبر blob:
أو data:
أو
filesystem:
عناوين URL (راجِع الدفاع عن الموارد الخارجية).
يمكن تحميل الفيديو والصوت من الخدمات البعيدة نظرًا لسلوكها الاحتياطي الجيد عندما في وضع عدم الاتصال أو اتصال متقطع.
تضمين محتوى على الويب
بدلاً من استخدام iframe، يمكنك الاتصال بعنوان URL خارجي باستخدام علامة webview (انظر تضمين. صفحات الويب الخارجية).