Я разрабатываю приложение Ionic, которое потребляет данные из RESTful API Laravel 5. Все соединения защищены (GET, POST и т. Д.) Именем пользователя / паролем и ролями пользователей, за исключением создания пользователя.

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

Моя идея состоит в том, чтобы, когда пользователь устанавливает приложение и открывает его в первый раз, создать секретный токен, который будет отправляться при каждом соединении. Затем проверьте UUID устройства и секретный токен, чтобы убедиться, что это авторизованное приложение.

Что вы думаете о такой защите соединений? Есть идея получше?

0
Programador Adagal 27 Окт 2015 в 13:44

2 ответа

Лучший ответ

Вам нужно искать веб-токены JWT (Jot) JSON, они решат проблему безопасности. Это может содержать идентификатор пользователя и другие данные, такие как уровень доступа. Не такие вещи, как информация о безопасности или информация о карте.

Когда пользователь аутентифицируется, Laravel отправляет им обратно JWT, который вы храните в локальном хранилище или хранилище сеансов, это заменяет внутренние сеансы.

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

Каждый запрос angular будет добавлять токен в заголовок с помощью перехватчика запросов, а промежуточное ПО Laravel расшифрует его и разрешит доступ к нужному маршруту или, возможно, вернет код ошибки «404».

Если после установки этого уровня аутентификации вы можете ограничить использование на уровне пользователя на бэкэнде.

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

1
Darren Lilley 27 Окт 2015 в 11:20

Я тоже столкнулся с теми же проблемами. Но после некоторого поиска в google я пришел к выводу, что вы можете поставить несколько стен против хакеров, но для того, кто не знает себе равных во взломе вашего приложения (ниндзя-хакер), он найдет способы использовать ваше приложение злонамеренно. Я также сталкивался с различными способами защиты своего внутреннего сервера (после Google). Эти действия обычно затрудняют злонамеренное использование вашего приложения.

  1. Вы можете зашифровать URL-адрес строк с помощью некоторого алгоритма и использовать зашифрованную строку в программе, т.е. https: \ google.com \ зашифрован во что-то вроде \ h09ae \ hff00 \ hebab \ h .... затем в программе String url = "\ h09ae \ hff00 \ hebab \ h .." Таким образом, кто-то может декомпилировать приложение не найти URL-адрес вашего сервера. В этом случае вам нужно расшифровать строковый URL, прежде чем вы сможете его использовать.

  2. Отправляйте конфиденциальные данные по HTTPS внутри тела запроса.

  3. Вы можете проверить, поступает ли запрос с устройства, используя токен Google. Для этого вам нужно будет использовать консоль Google API. Перейдите по этой ссылке, чтобы получить соответствующее руководство по Android на этом тема.

  4. Наконец, ключ подписи, используемый при создании вашего apk, уникален и гарантирует, что ваш apk не подделан. Поэтому сгенерируйте хэш-ключ своего ключа подписи перед его загрузкой в ​​Google Play и сохраните его на своем сервере, а также программным способом получите значение хеш-функции ключа подписи и отправьте его с очень запросом на ваш сервер.

Надеюсь, это поможет вам ..

0
Fabin Paul 27 Окт 2015 в 11:18