Javascript Запретить доступ к странице, которая вводится непосредственно в браузере - PullRequest
0 голосов
/ 29 сентября 2018

Можно ли запретить доступ к странице, которая вводится напрямую в браузере, но не запрещая ее, если URL-адрес исходит из iframe?

1 Ответ

0 голосов
/ 29 сентября 2018

Любая проверка на стороне клиента, которую вы делаете, может быть обойдена.Для надежного механизма вам потребуется задействовать сервер: кликнув по ссылке, отправьте на сервер сообщение с подписью браузера (включая IP), которое вы записываете с указанием даты / времени.Когда запрашивается защищенная страница, проверьте подпись браузера в запросе и убедитесь, что она соответствует подписи, полученной в течение приемлемого времени до запроса.Это также может быть обойдено, чуть менее просто.

С точки зрения механизмов только на стороне клиента (которые, опять же, легко обойти):

  • ВыВозможно, люди заставят вас указать на document.referrer, но чрезвычайно легко подделать, и я бы не стал на это полагаться.

  • Единственный другой способ, которым я могу думать, - это если обе страницы имеют одинаковое происхождениеЕсли это так, когда пользователь щелкает ссылку в iframe, вы можете установить значение в localStorage:

    // (In a click handler on the link)
    localStorage.setItem("clicktime", Date.now());
    

    ... и на странице:

    var MAX_DURATION = 500; // milliseconds
    var clicktime = localStorage.getItem("clicktime");
    if (!clicktime || isNaN(clicktime) || Date.now() - MAX_DURATION > 500) {
        // Disallow access by (for instance) redirecting or similar
    }
    

... но опять же, механизмы на стороне клиента легко обойти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...