[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: private restful api
MatrixGod
всем привет!

вопрос больше архитектурный чем вопрос о пхп.

в общем, разрабатываем приложение для мобильников.
приложение говорит с серваком на restful api и через https.
api зыкрыт и создан только для аппы, то есть никто другой, по идее, лезть туда не должен.

вопрос в том, как лучше всего аутентифицировать запросы?
проект только родился. на данный момент сохраняем токены в бд (as-is).
при каждом запросе на end-point посылается токен в URL а дата в теле запроса.
по токену мне и известно кто что и почему.

на сколько этого достаточно чтоб хорошо защитить api?

если мой дизайн хромает - буду рад если кто-то скажет почему.

спасибо!
AllesKlar
По токену вполне достаточно.
У меня в api еще время жизни для токена установлено. если более n часов не было обращений к api с данным токеном, то токен устанавлевается как недействительный.

_____________
[продано копирайтерам]
MatrixGod
AllesKlar, мое сомнение в том что если ты скачал аппу и вдруг решил в ней поковыряться то сможешь найти этот самый токен. хотя я его храню в encrypted storage на девайсе.

я хочу убедиться что даже если злоумышленник получит в руки токен - ему это не поможет.
AllesKlar
MatrixGod
Ну, тогда это уже не токен, раз он постоянный, а так.. текстовая константа. И ломать твою аппу не надо, достаточно трафик поснифать.
Выдумывай тогда хитрый алгоритм, который будет генерировать каждый раз новый токен.
API со своей стороны по тому же алгоритму будет генерировать значение для сравнения.

Ну, а если дойдет дело до ковыряния в аппе, то тут ничего не сделаешь.
Хотя, если твоя аппа не приносит 100500 баксов в день, то, поверь, никто ее ковырять не будет.
Потому как дезасемблировать скомпилированый ява файл, дело затратное, и те, кто это умеют делать, стоят дорого и потратят свои усилия на другое.

_____________
[продано копирайтерам]
MatrixGod
AllesKlar, ну на счет декомпиляции (для андроида) - это проще простого. всего-то одна прога нужна и весь сорс-код твой. я этим сам занимаюсь.

дело не в том сколько она стоит а в том чтоб учиться и делать вещи правильно.
и на тот случай что она да будет стоить 100500, потому что на эту прибыль она и рассчитана.

в общем, вернемся к баранам. зачем менять каждый раз токен? что это даст? ведь даже если я его меняю на девайсе все равно всегда будет новый токен.
mvg
Теоретически технологии RestFull достаточно для того, чтобы защитить api от злодейских действий. Можно поизвращаться и поместить роутер рестсервера на выделенном хосте дабы злодей всячески не смог узнать где храниться собственный код апи. Единственное что остается сделать, так это создать скрытый алгоритм построения запроса к серверу чтобы избежать несанкционированную отдачу данных.
AllesKlar
mvg
О, как ты по-научному перефразировал мое деревенское
Цитата
Выдумывай тогда хитрый алгоритм, который будет генерировать каждый раз новый токен.
biggrin.gif

MatrixGod
Цитата
на счет декомпиляции (для андроида) - это проще простого

Какая разница, хоть для андроида, хоть для автомата калашникова. Ява - она и в Африке ява, она была создана кроссплатформенной.

Цитата
что она да будет стоить 100500

Тогда ссори, я тут не советчик. Я с такими серьезными проектами еще никогда не сталкивался. Это тебе лучше обатьиться к гуру по безопасности, они тебе тыщ за 10 баксов наладят безопасность в лучшем виде, и еще за 2-3 тыщи баксов в месяц будут поддерживать.
Опять же, если случится хак, то претензии к ним в контору, они тебе восполнять понесенные убытки.

_____________
[продано копирайтерам]
slobotsky.denis
Цитата (MatrixGod @ 14.01.2015 - 20:28)
вопрос в том, как лучше всего аутентифицировать запросы?

Во-первых, не аутентефицировать, а авторизовать. Во-вторых, oAuth2 рассматривали? Чем не угодила?

_____________
PHP: The Right Way
Бесплатное обучение Symfony2

Tox: 55BB67DE54B1CB14F8C37B4F3AED64E6A45922988D22F85EF75039751F26F05460664D978F5C
vagrand
Честно говоря не понимаю вопроса. Если есть апи, то должны быть у каждого ее пользователя уникальные параметры аутентификации. Это может быть или банальные логин и пароль, на основании которых генерится уникальный и временны токен для последующих запросов. Это может быть секретный ключ, который сохраняется в настройках приложения и на основании которого генерится уникальная для каждого запрос подпись. Зачем что-то выдумывать, когда все уже изобретено?

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.