Как я могу убедиться, что мой PHP API может использоваться только определенной страницей JavaScript - PullRequest
0 голосов
/ 06 июня 2011

У меня есть страница PHP («API»), которая выполняет действия на стороне сервера (например, ввод информации в базу данных) на основе ввода строки GET.

Могу ли я защитить его так, чтобы только API-код на определенном сайте мог получить доступ к API, включая защиту, например, от того, что кто-то набирает текст в консоли JavaScript, находясь на сайте?

Ответы [ 3 ]

3 голосов
/ 06 июня 2011

Нет, от этого невозможно полностью защититься.

Однако вы можете усложнить это. Например:

  • Требуется заголовок Referer для указания на эту страницу (однако некоторые браузеры не отправляют Referer)
  • Вы также можете проверить, что X-Requested-With равно XMLHttpRequest, если используемая вами библиотека JS устанавливает это.
1 голос
/ 06 июня 2011

Можно, но только частично.Например, Google использует метод ключей API, которые сопоставляются с $ _SERVER ["HTTP REFERER"], но эти вещи легко подделать.Просто убедитесь, что пользователю потребуется настоящая аутентификация для вещей, которые требуют реальной безопасности (обновления / изменения / удаления и т. Д.)

0 голосов
/ 06 июня 2011

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

Я бы использовал установленный метод (не свой собственный) для входа с учетными данными пользователя и проверки вводана стороне сервера.На стороне клиента нет никакого способа заставить пользователей не предпринимать определенных действий (например, вызвать вашу страницу или * кашлять * копировать музыкальный файл * кашлять *).Эта технология будет называться DRM или чем-то подобным

Другая проблема заключается в том, что вы используете запросы GET для постоянного изменения состояния на сервере.Не делайте этого: используйте вместо этого запрос POST (или PUT или DELETE).

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