2016-05-24 3 views
1

Предположим, что я извлекаю данные из API, используя вызовы AJAX. (например themoviedb)Защита «секретного» ключа в запросе AJAX

Теперь API требует API ключа, чтобы иметь возможность получить данные, но я не хочу, чтобы показать это API ключа к общественности в случае злоупотребления этого ключа.

Есть ли решение, чтобы убедиться, что этот ключ защищен/скрыт вместо маршрутизации через функцию PHP?

$.ajax({ 
    type: "POST", 
    url: "http://api.themoviedb.org/3/search/movie?query=" + data + "&api_key=xxxxxxxxxxxxxxxxxxxxxx", 
    dataType: 'jsonp', 
    data: { 
     data: data, 
    }, 

    success: function (resData) { 
     // whatever functions here 
    } 
}) 
+1

Клиент сможет увидеть все, что вы проходите по проводу, и оно будет доступно любому, кто знает, где искать простой текст. Если это нужно сохранить в секрете, вам нужно будет инкапсулировать вызовы api на другом уровне абстракции на вашем защищенном сервере. –

ответ

6

Нет, не существует. Это невозможно.

Вместо того, чтобы распространять свои секретные ключи для клиента, храните ключевой сервер и «прокси» ресурс, выставляя свой собственный API, который может сделать сторонний запрос для клиента.

Ваш собственный API может использовать любую форму дросселирования и аутентификации, которые вы хотите.

Смежные вопросы