Операції alert, prompt та confirm. Взаємодія з користувачем Javascript. JavaScript - Методи alert, prompt та confirm Додаткове правило до простого правила

На цьому уроці ми познайомимося з методами об'єкта window: alert(), prompt() та confirm().

Метод alert()

Метод alert() призначений для виведення на екран користувача попереджувального діалогового вікна із зазначеним повідомленням та кнопкою "ОК". Воно може використовуватися для того, щоб донести до користувача важливу інформацію.

window.alert(Параметр_1);

Метод alert() має один обов'язковий параметр – це текст повідомлення, яке відображається у діалоговому вікні. Даний метод внаслідок свого виконання нічого не повертає.

Наприклад, виведемо для відвідувача сайту при натисканні на посилання попереджувальне діалогове вікно: Перейти на сайт

Метод confirm()

Метод confirm() об'єкта window призначений для виведення на екран користувача діалогового вікна із зазначеним повідомленням та кнопками "ОК" та "Скасувати". Ви можете використовувати вікно з підтвердженням, щоб запитати користувача про дозвіл на виконання тієї чи іншої дії.

var resultConfirm = confirm(Параметр_1);

Даний метод має один параметр – це текст повідомлення, яке буде виведено у діалогове вікно.

Метод confirm() як результат (resultConfirm) свого виконання повертає одне з двох значень:

  • true якщо користувач натиснув "ОК";
  • false , якщо користувач натиснув "Скасувати" або закрив його.

Наприклад, виведемо в елемент id="resultConfirm" результат натискання користувачем на кнопку "ОК" у діалоговому вікні:

Метод prompt()

Метод prompt() призначений для виведення на екран користувача діалогового вікна з повідомленням, текстовим полем для введення даних та кнопками "ОК" та "Скасувати". Воно призначене для того, щоб запросити дані користувача.

var resultPrompt = prompt(Параметр_1, Параметр_2);

Цей метод має два параметри:

  • повідомлення, яке буде відображено у діалоговому вікні. Цей параметр є обов'язковим і містить повідомлення, в якому "говориться", які дані повинен ввести користувач текстове поле;
  • другий параметр є необов'язковим і може використовуватися для вказівки початкового значення, яке буде виведено у полі діалогового вікна введення.

Залежно від дій користувача метод prompt() може повертати такі дані:

  • текстове значення - якщо в полі введення містяться дані та користувач натиснув "ОК";
  • порожній рядок - якщо у полі введення не містяться дані та користувач натиснув "ОК";
  • null - якщо користувач натиснув "Скасувати" або закрив це вікно, при цьому не важливо, які дані були введені в текстове поле.

Примітка: діалогове вікно, яке з'являється в результаті виконання одного з методів alert() , confirm() або prompt() модальне, тобто. воно блокує доступ користувача до батьківського додатку (браузеру) доти, доки користувач не закриє це діалогове вікно.

Наприклад, запитаємо у користувача ім'я і виведемо залежно від результату текст елемент c id="nameUser" :

Наприклад, попросимо користувача вгадати число 8:

... Вгадай число

Міжсайтовий скриптинг (XSS) - це вразливість, яка полягає у впровадженні коду, який виконується на стороні клієнта (JavaScript) у веб-сторінку, яку переглядають інші користувачі.

Вразливість виникає через недостатню фільтрацію даних, які користувач надсилає для вставки на веб-сторінку. Набагато простіше зрозуміти на конкретному прикладі. Згадайте будь-яку гостьову книгу – це програми, які призначені для прийняття даних від користувача та подальшого їх відображення. Уявімо, що гостьова книга ніяк не перевіряє і не фільтрує дані, що вводяться, а просто їх відображає.

Можна накидати свій найпростіший скрипт (немає нічого простіше, ніж писати погані скрипти на PHP - цим дуже багато хто займається). Але вже достатньо готових варіантів. Наприклад, я пропоную почати знайомство з Dojo та OWASP Mutillidae II. Там є схожий приклад. В автономному середовищі Dojo перейдіть у браузері за посиланням: http://localhost/mutillidae/index.php?page=add-to-your-blog.php

Якщо хтось із користувачів ввів:

То веб-сторінка відобразить:

Вітання! Подобається твій веб-сайт.

Якщо користувач введе так:

Вітання! Подобається твій веб-сайт.

То це відобразиться так:

Браузери зберігають безліч кукіз великої кількості сайтів. Кожен сайт може отримати кукіз тільки збережені ним самим. Наприклад, сайт example.com зберіг у вашому браузері деякі кукізи. Ви заши на сайт another.com, цей сайт (клієнтські та серверні скрипти) не можуть отримати доступ до кукізів, які зберіг сайт example.com.

Якщо сайт example.com вразливий до XSS, це означає, що ми можемо тим чи іншим способом впровадити в нього код JavaScript, і цей код буде виконуватися від імені сайту example.com! Тобто. цей код отримає, наприклад, доступ до кукіз сайту example.com.

Думаю, всі пам'ятають, що виконується JavaScript у браузерах користувачів, тобто. за наявності XSS, впроваджений шкідливий код отримує доступ до даних користувача, який відкрив сторінку веб-сайту.

Впроваджений код вміє все те, що вміє JavaScript, а саме:

  • отримує доступ до кукіз сайту, що переглядається
  • може вносити будь-які зміни до зовнішнього вигляду сторінки
  • отримує доступ до буфера обміну
  • може впроваджувати програми на JavaScript, наприклад, кі-логери (перехоплювачі натиснутих клавіш)
  • підчіпляти на BeEF
  • та ін.

Найпростіший приклад з кукіз:

Насправді, alertвикористовується лише для виявлення XSS. Реальне шкідливе корисне навантаження здійснює приховані дії. Вона приховано зв'язується з віддаленим сервером зловмисника та передає на нього вкрадені дані.

Види XSS

Найголовніше, що потрібно розуміти про види XSS те, що вони бувають:

  • Зберігані (постійні)
  • Відображені (Непостійні)

Приклад постійних:

  • Введене зловмисником спеціально сформоване повідомлення у гостьову книгу (коментар, повідомлення форуму, профіль), яке зберігається на сервері, завантажується з сервера щоразу, коли користувачі запитують відображення цієї сторінки.
  • Зловмисник отримав доступ до даних сервера, наприклад, через SQL ін'єкцію, і впровадив у дані, що видаються користувачеві, дані зловмисний JavaScript код (з кілогерами або з BeEF).

Приклад непостійних:

  • На сайті є пошук, який разом з результатами пошуку показує щось на кшталт «Ви шукали: [рядок пошуку]», при цьому дані не фільтруються належним чином. Оскільки така сторінка відображається тільки для того, хто має посилання на неї, то поки зловмисник не надішле посилання іншим користувачам сайту, атака не спрацює. Замість надсилання посилання на жертву, можна використовувати розміщення зловмисного скрипту на нейтральному сайті, який відвідує жертва.

Ще виділяють (деякі як різновиду непостійних XSS вразливостей, деякі кажуть, що цей вид може бути різновидом постійної XSS):

  • DOM-моделі

Особливості XSS заснованих на DOM

Якщо сказати дуже просто, то зловмисний код «звичайних» непостійних XSS ми можемо побачити, якщо відкриємо HTML-код. Наприклад, посилання сформоване таким чином:

Http://example.com/search.php?q="/>

А при відкритті вихідного HTML коду ми бачимо щось на зразок такого: