Как замаскировать уникальные атрибуты в теге скрипта - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть файл сценария удаленного чата, который передает уникальные токены в теге сценария. Одна проблема с этим apporach - любой может повторно использовать этот тег сценария с моими уникальными параметрами для доступа к чату, который я не хочу. Как я могу замаскировать эти идентификаторы, чтобы они не были видны на стороне клиента.

<script src="https://www.website.com/chat.js" channelId="8adf8b3" token="12345"></script>

Я попытался создать прокси-узел Node, который получает запрос, но я не уверен, как захватить это значение атрибута и переслать его на URL. Этот код также представляет ошибку HTTP 403.

const proxy = httpProxy.createProxyServer({ proxyOptions });
app.get('/*', cors(corsOptions), (req, res) => {
    const targetUrl = config.proxyForwardingUrl + req.url;
    console.log(targetUrl);
    proxy.web(req, res, { target: targetUrl });
});

Является ли прокси-сервер лучшим подходом или есть другой способ выполнить то, что я ищу?

1 Ответ

0 голосов
/ 11 апреля 2019

Обычно это делается с токенами, срок действия которых истекает. Один хороший пример - токены jwt. Эти токены подписаны с помощью закрытого ключа, поэтому пользователь не может их изменять / манипулировать, если сервер не знает об этом.

Токены Jwt содержат метку времени, когда истекает срок действия, и сервер знает, когда закрывать веб-сокет и / или отклонять любые запросы от клиента, используя токен с истекшим сроком действия.

Поток обычно составляет:

  1. Клиент заходит на веб-страницу и получает токен
  2. Используя токен, он подключается к разным ресурсам
  3. Когда токен близок к истечению срока действия, он запрашивает новый токен, затем перейдите к шагу
  4. Когда токен не выдан, сервер начинает закрывать все ресурсы

Вот как вы можете защитить себя от утечки секретов, даже если злодей приобретает жетон, он не сможет использовать ресурс или только в течение небольшого времени.

Обычно продолжительность жизни токенов для чатов / потоков не превышает минуты.

Здесь вы можете прочитать о JWT подробнее.

Есть ли способ скрыть этот токен JWT от клиента, чтобы его нельзя было увидеть или получить?

Я не знаю ни о каких методах, которые это делают. Одна мысль, которую вы можете сделать, это обфусцировать это, но она все еще может быть расшифрована. По сравнению с токенами JWT их невозможно взломать, поскольку они подписаны ключом RSA , которые безопасны и используются во всем Интернете.

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