Как аутентификация API работает только с открытым ключом на JavaScript? - PullRequest
2 голосов
/ 24 мая 2019

Английский не мой родной язык. Я сделаю все возможное, чтобы объяснить себя.


Я создаю API для использования клиентами через Javascript. Клиент должен разместить на своем сайте что-то вроде этого:

<script>
    var my_api = { 
        public_key: "123456"
    };
</script>
<script async src="https://api.example.com/v1/init.js"></script>

Итак ... как я могу использовать открытый ключ для проверки веб-сайта клиента?

Я знаю, что могу найти реферера и сравнить его с ключом в моей базе данных, но:

(a) Если реферер может быть подделан, открытый ключ не будет полезен, потому что он уже открыт

И (b) если рефери не может быть фальсифицирован, зачем мне использовать открытый ключ? Разве не достаточно с реферером?

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

В прошлом я создавал только API с закрытым и открытым ключом (или только с закрытым).

Наконец, я хочу, чтобы все это было установлено на веб-сайте клиента путем копирования / вставки нескольких строк кода JS (поэтому я хочу использовать только открытый ключ).

Я знаю, что это возможно, потому что именно так работает Google Ads, мне просто нужна помощь, чтобы выяснить способ.


Примечание: я искал другую тему на форуме, но не смог найти ответа, просто что-то связанное с SSH и nodeJS. Я занимаюсь разработкой простого API с использованием PHP и чистого JS.

1 Ответ

0 голосов
/ 24 мая 2019

Проблема, с которой вы можете столкнуться при размещении ключа API на их веб-сайте, заключается в том, что он может быть просмотрен кем-либо и использован.Используйте переменную окружения Process в системе, которую они используют для размещения своего сайта.Вы можете использовать этот ресурс для информации: https://hackernoon.com/how-to-use-environment-variables-keep-your-secret-keys-safe-secure-8b1a7877d69c

...