Узел: проверьте, безопасен ли URL для запроса - PullRequest
0 голосов
/ 15 февраля 2019

Я собираю URL-адреса от посетителей моего сайта, которые я затем (по требованию) запрашиваю из своего бэкэнда.Однако я застрял при проверке URL-адреса.

URL-адрес безопасен для запроса, когда:

  • Это действительный URL-адрес
  • Это недвусмысленно(в терминах RFC 1918 это общедоступно)

Что я нашел до сих пор:

  • Интерфейс URL (проверяет URL)
  • The ipaddrБиблиотека .js (проверяет IP-адреса)
  • Библиотека is-valid-domain (похоже, не работает, поскольку возвращает значение true для 256.256.256.256)

Однако ни один из них не кажетсячтобы делать то, что мне нужно, - даже их комбинация не делает.

Есть ли что-то, что я упустил из виду?

1 Ответ

0 голосов
/ 15 февраля 2019

Я решил свою проблему.Я использовал:

Сначала япроверьте ввод с помощью new URL(input), а затем я использую require('hostname-is-private').isPrivate (это асинхронная функция) для этого URL.hostname.Это также работает на IP-адресах (даже если имя не предполагает этого).

Код выглядит примерно так:

let isPrivate = require('hostname-is-private').isPrivate;

function validateURL(urlstr, cb) {
  try {
    let url = new URL(urlstr);
    isPrivate(url.hostname, (err, res) => {
      if (err) {cb(false)}
      cb(!res);
    })
  } catch (e) {
    return cb(false);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...