الفرق بين المراجعتين لصفحة: «JavaScript/Document/domain»

من موسوعة حسوب
طلا ملخص تعديل
 
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:<code>Document.domain</code>}}</noinclude>
<noinclude>{{DISPLAYTITLE:<code>Document.domain</code>}}</noinclude>
تُستعمل للحصول على نطاقِ أصلِ المُستند الحالي أو ضبطه. وذلك حسب سياسة الأصل الواحد (same origin policy).
تُستعمل للحصول على نطاقِ أصلِ المُستند الحالي أو ضبطه. وذلك حسب سياسة الأصل الواحد (same origin policy).


سطر 17: سطر 16:
var badDomain = "www.example.xxx";
var badDomain = "www.example.xxx";


if (document.domain == badDomain)
if (document.domain == badDomain) {
   window.close(); // هذا مُجرّد مثال، إذ أنّ هذا السّطر لا يقوم بأي شيء في بعض الأحيان
   window.close(); // هذا مُجرّد مثال، إذ أنّ هذا السّطر لا يقوم بأي شيء في بعض الأحيان
}
</syntaxhighlight>
</syntaxhighlight>


سطر 29: سطر 29:
</syntaxhighlight>
</syntaxhighlight>


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


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

المراجعة الحالية بتاريخ 11:33، 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 للخاصية document.domain إن كان نطاق الصفحة هو wiki.hsoub.com أو academy.hsoub.com لكن لا يُمكن تحديد قيمة اسم نطاق مُغاير مثل hsoub.org.

إن ضُبِطت هذه الخاصيّة بنجاح، فالجزء الخاصّ بالمنفذ (port) يُضبَطُ كذلك إلى القيمة null.

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

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