Код Middle XSS и CSP обновлено

Проверка URL для ссылки

Условие

Напишите isSafeHref(url), которая решает, можно ли поставить строку в href ссылки.

Браузер перед разбором URL удаляет символы табуляции и перевода строки (\t, \n, \r) в любом месте и отбрасывает ведущие управляющие символы и пробелы (коды 0x00-0x20). Повторите это, затем определите схему: буква, за ней буквы, цифры, +, - или ., затем двоеточие (без учёта регистра).

Разрешены: URL без схемы (относительные, #якорь, //host/path) и схемы http, https, mailto. Всё остальное запрещено. Верните true или false.

Примеры

isSafeHref("https://example.com/a?b=1") // true
isSafeHref("/profile/42") // true
isSafeHref("#top") // true

Как подойти

Подсказки: 2
  1. Сначала нормализуйте строку, потом ищите схему регулярным выражением.
  2. Отсутствие схемы означает относительный URL.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.