Безопасная Аутентификация API - PullRequest
0 голосов
/ 26 ноября 2011

Я создаю свой собственный API для системы статистики игр (на PHP). И я хочу, чтобы пользователи могли войти в систему из своей игры.

По сути, игра сделана с использованием GM: HTML5 (GameMaker для HTML5), что означает, что она только запутана, но все же читаема любым отладчиком JavaScript.

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

Если я отправлю ключ API вместе с запросом, он будет виден (например, с помощью консоли разработчика Firefox). И с этим ключом API любой может «войти» и отправить статистические данные.

То, что я хотел бы сделать, это отправить домен, где находится игра, в зашифрованном виде с запросом на вход. (Просто простой запрос GET к серверу из моей библиотеки PHP). Затем сервер должен будет расшифровать эту строку (зашифрованный домен / IP) и проверить, соответствует ли она ключу API, который также был отправлен с запросом.

Но я хотел бы знать, насколько это безопасно на самом деле.

А если небезопасно, что будет лучше?

Ответы [ 3 ]

1 голос
/ 26 ноября 2011

Вы можете использовать OAuth 1.0 (или 2.0, если у вас есть SSL-соединения). Это протокол, который зарекомендовал себя для таких сайтов, как Twitter и Facebook, но довольно прост в реализации.

http://tools.ietf.org/html/rfc5849

Однако, обратите внимание, что в конечном итоге ни одна библиотека безопасности не является безопасной. Библиотека iOS5 OAuth была взломана через день после того, как был выпущен первый превью для разработчиков. Основное правило: если у пользователя есть доступ к бинарной версии, это небезопасно.

0 голосов
/ 26 ноября 2011

Это неявное нарушение CWE-602 , и никогда не будет решением этой проблемы.Злоумышленник всегда сможет использовать такие инструменты, как TamperData , для перехвата и изменения запросов или другого изменения кода другим способом.Возможно, вы ищете «(в) безопасность, хотя и неизвестность».

0 голосов
/ 26 ноября 2011

Вариант 2:

Напишите свой собственный протокол.Обязательно учитывайте все эти факторы:

  • Данные не должны редактироваться на уровне прокси (подписать все поля)
  • Запрос не должен воспроизводиться (добавить случайный одноразовый номер, которыйдолжен быть уникальным)
  • Запрос должен быть выполнен немедленно (добавьте параметр времени)

Требуется система API, поэтому включите ключ API.

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