Подтвердить что ты не робот

Как защитить ключ API при использовании JavaScript?

Итак, я разрабатываю небольшое приложение только для собственного использования и, возможно, проект с открытым исходным кодом на Git. Я использую API от Envato Marketplaces, и, как вы все знаете, есть некоторые операции, которые не требуют каких-либо ключей, но в то же время есть некоторые, которые действительно требуют.

Сначала я сделал хорошую API-оболочку для API Envato на PHP, но потом решил немного поэкспериментировать с JavaScript, поэтому я разрабатываю одну и ту же оболочку с помощью JavaScript. Пока у меня нет проблем с публичными операциями, но теперь я должен использовать API-ключ.

Мой вопрос будет, если есть способ защитить ключ API в JavaScript. Я не могу просто поместить его туда в виде обычного текста, поскольку он может затем использоваться другими, которые видят код. Так будет ли реализация, в которой API остается секретным? Может быть, захватить его из текстового файла JSON с помощью XHR?

4b9b3361

Ответ 1

Короткий ответ: Нет

Что бы вы ни делали, чтобы запутать ключ, вам все равно нужно отправить его, чтобы сделать его доступным на клиенте, и поэтому его можно будет извлечь, используя fx. Firebug.

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

Правильная вещь - создать оболочку PHP вокруг вызовов API, которым требуются ключи, а затем вызвать эту оболочку из Javascript.

Ответ 2

Мое решение сейчас состоит в том, чтобы написать небольшую обёртку от ржавчины, бросить её в /cgi-bin и сделать вызовы для этого. Это должно держать api-ключ, api creds и данные сеанса отдельно от клиента.