php - استغلال - xss test




أفضل الممارسات: شرعية عبر الموقع البرمجة (4)

في حين يعتبر البرمجة عبر المواقع عموما سلبية، لقد واجهت عدة حالات حيث أنه من الضروري.

كنت أعمل مؤخرا ضمن حدود نظام إدارة المحتوى المحدود جدا. كنت بحاجة إلى تضمين رمز قاعدة البيانات داخل الصفحة، ولكن ملقم استضافة لم يكن لديك أي شيء قابل للاستخدام المتاحة. أنا أقامت بضع مخطوطات عارية العظام على الخادم الخاص بي، في البداية التفكير في أنني يمكن أن تستخدم أجاكس لاستيراد محتويات مخطوطاتي مباشرة في قالب كمس (وبالتالي الاحتفاظ الصور الديناميكية، عناصر القائمة، كس، الخ). كنت مخطئ.

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

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

يعمل جافا سكريبت عن بعد. فإنه يكسر عندما يكون المستخدم قد تعطيل جافا سكريبت، وهو الجانب السلبي؛ لكنها تعمل. و "المشكلة" كنت تواجه مع استخدام جافا سكريبت البعيد كان أن اضطررت إلى استخدام دالة جس document.write() لإخراج أي محتوى. أي ناتج غير جاس يؤدي إلى أخطاء في النص البرمجي. بالإضافة إلى استخدام document.write() لكل سطر، لديك أيضا للتأكد من أن المحتوى هرب - أو آخر كنت في نهاية المطاف مع المزيد من أخطاء البرنامج النصي.

وكان حلي كما يلي:

تلقى البرنامج النصي معلمة جيت ("الصفحة") ثم بحث عن الملف ( {$page}.php )، وقراءة المحتويات في متغير. ومع ذلك، كان علي استخدام تقنيات التخزين المؤقت محرجا من أجل تنفيذ البرامج النصية المضمنة (لأشياء مثل تفاعل قاعدة البيانات) ثم تجريد المحتوى النهائي لكافة أحرف كسر الخط ( \n ) متبوعا بالهروب من جميع الأحرف المطلوبة. والنتيجة النهائية هي أن البرنامج النصي الأصلي (الذي يخرج جافا سكريبت) يصل إلى نصوص "قياسية" تبدو على خادمي ويحول مخرجاته القياسية إلى جافاسكريبت لعرضها ضمن نموذج نظام إدارة المحتوى.

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


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

لست متأكدا مما إذا كان من شأنها أن تعمل لسيناريو الخاص بك محددة ... من الصعب أن نعرف حتى مع وصف مطول الخاص بك ...


لقد جئت عبر هذا البرنامج النصي الخادم الجانب يدن قبل. وتقول انها بنيت للعمل مع واجهات برمجة تطبيقات البحث ياهو.

وسوف تعمل مع أي مجال، إذا كنت ببساطة تقليم رمز ياهو أبي بها؟ أو هل تحتاج إلى استبدالها بالنطاق الذي تريد أن تعمل معه؟


يمكنك محاولة إيسيكسدم ، من خلال تضمين القليل جدا من التعليمات البرمجية، يمكنك تمرير البيانات أو طريقة المكالمات بين الوثائق من المجالات المختلفة.


يمكن الوصول إلى المحتوى البعيد من إفريم بواسطة جافاسكريبت المحلي.

الملقم البعيد فقط لتعيين document.domain الصفحة.

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

يحتوي الموقع أ على إفريم مع src='Site B/home.php'

home.php يشبه هذا:

[php stuff]...[/php]
[script type='text/javascript']document.domain='Site A'[/script]




xss