الفرق بين المراجعتين ل"JavaScript/Document/domain"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
(إضافة جزء من الصّفحة)
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:<code>Document.domain</code>}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:<code>Document.domain</code>}}</noinclude>
 
 
تُستعمل للحصول على نطاقِ أصلِ المُستند الحالي أو ضبطه. وذلك حسب سياسة الأصل الواحد (same origin policy).
 
تُستعمل للحصول على نطاقِ أصلِ المُستند الحالي أو ضبطه. وذلك حسب سياسة الأصل الواحد (same origin policy).
  
سطر 32: سطر 31:
 
== ملاحظات ==
 
== ملاحظات ==
 
تُعيد هذه الخاصيّة القيمة <code>null</code> في حالة لم يُمكِن التّعرّف على نطاق المُستند.
 
تُعيد هذه الخاصيّة القيمة <code>null</code> في حالة لم يُمكِن التّعرّف على نطاق المُستند.
 +
يُمكن تغيير قيمة هذه الخاصيّة إلى النّطاق الأب للنّطاق الفرعيّ الحالي. على سبيل المثال، يُمكنُ تعيين القيمة hsoub.com للصّفحة إن كان نطاقها wiki.hsoub.com أو academy.hsoub.com لكن لا يُمكن تحديد قيمة اسم نطاق مُغاير مثل hsoub.org.
 +
إن ضُبِطت هذه الخاصيّة بنجاح، فالجزء الخاصّ بالمنفذ (port) يُضبَطُ كذلك إلى القيمة null.
 +
هناك فرق بين خاصيّة document.domain لم تتغيّر قيمتها وخاصيّة ذات قيمة ضُبِطت بنفس النّطاق الخاصّ بعنوان URL الخاصّ بالمُستند، ولو أعادت الخاصيّة نفس القيمة في كلتا الحالتين. يُمكن لمُستند أن يصِل إلى مُستند آخر إن ضُبِطت لهما الخاصيّة document.domain بنفس القيمة، إشارةً بذلك للرّغبة في العمل المُشترك بينهما، أو في حالة لم تُضبط الخاصيّة لأي منهما والنّطاقات في عناوين URL مُتساويان. ولو لم تكن هذه السّياسة الخاصّة موجودة، فجميع المواقع ستكون عرضة لهجمات XSS من نطاقاتها الفرعيّة، أي أنّه سيُمكِن الهجوم على academy.hsoub.com في حالة كانت هناك ثغرة في wiki.hsoub.com.
  
 
==مصادر ومواصفات==
 
==مصادر ومواصفات==

مراجعة 11:05، 21 مارس 2018

تُستعمل للحصول على نطاقِ أصلِ المُستند الحالي أو ضبطه. وذلك حسب سياسة الأصل الواحد (same origin policy).

البنية العامة

var domainString = document.domain;
document.domain = string;

مثال

// للمُستند
// www.example.xxx/good.html

// يُغلق هذا البرنامج النّافذة
var badDomain = "www.example.xxx";

if (document.domain == badDomain) {
   window.close(); // هذا مُجرّد مثال، إذ أنّ هذا السّطر لا يقوم بأي شيء في بعض الأحيان
}
// إن كان الرّابط مثلا
// https://wiki.hsoub.com/JavaScript/Document
// فستُضبط القيمة التّاليّة للمُتغيّر
// "wiki.hsoub.com"
var domain = document.domain;

ملاحظات

تُعيد هذه الخاصيّة القيمة null في حالة لم يُمكِن التّعرّف على نطاق المُستند. يُمكن تغيير قيمة هذه الخاصيّة إلى النّطاق الأب للنّطاق الفرعيّ الحالي. على سبيل المثال، يُمكنُ تعيين القيمة hsoub.com للصّفحة إن كان نطاقها wiki.hsoub.com أو academy.hsoub.com لكن لا يُمكن تحديد قيمة اسم نطاق مُغاير مثل hsoub.org. إن ضُبِطت هذه الخاصيّة بنجاح، فالجزء الخاصّ بالمنفذ (port) يُضبَطُ كذلك إلى القيمة null. هناك فرق بين خاصيّة document.domain لم تتغيّر قيمتها وخاصيّة ذات قيمة ضُبِطت بنفس النّطاق الخاصّ بعنوان URL الخاصّ بالمُستند، ولو أعادت الخاصيّة نفس القيمة في كلتا الحالتين. يُمكن لمُستند أن يصِل إلى مُستند آخر إن ضُبِطت لهما الخاصيّة document.domain بنفس القيمة، إشارةً بذلك للرّغبة في العمل المُشترك بينهما، أو في حالة لم تُضبط الخاصيّة لأي منهما والنّطاقات في عناوين URL مُتساويان. ولو لم تكن هذه السّياسة الخاصّة موجودة، فجميع المواقع ستكون عرضة لهجمات XSS من نطاقاتها الفرعيّة، أي أنّه سيُمكِن الهجوم على academy.hsoub.com في حالة كانت هناك ثغرة في wiki.hsoub.com.

مصادر ومواصفات