2017-02-20 1 views
1

Я по-прежнему новичок в Угловых приложениях и задаюсь вопросом о некоторых проблемах безопасности и хотел бы получить некоторые советы о том, как справиться с этим.Как сделать угловое приложение безопасным, если вам нужны важные вары и параметр?

Допустим, что я обращаюсь к своему серверу Amazon S3 из своего Углового приложения. Это для меня нужно написать где-то мое bucketname, accesskey и секретный ключ ... но так как это все видно пользователю, каждый может видеть секретный ключ, который не делает его более секретным, конечно.

Я также не могу использовать что-то вроде СОЛЬ и т. Д. Для создания паролей пользователей по той же причине. Все видно в конце, и даже с помощью minify и ouglify кто-то может также изменить его.

Каков наилучший подход к подобным действиям? До сих пор я могу только думать об одном, и в этом случае я не должен использовать javascript или угловой, и, к примеру, я могу получить доступ только к своей корзине S3 через PHP. Но это не может быть единственным, на что я надеюсь?

Для Firebase это выглядит так же проблематично, поскольку каждый может сразу увидеть всю информацию и может подключиться в основном к моей БД и добавить, например, информацию, которую он хочет. Конечно, я могу настроить правила и сделать определенные вещи обязательными, но в конце этого кода можно легко обнюхать мой код, который кажется довольно небезопасным, если я сравню это с бэкэндом php/mysql.

+1

Вы не хотите хранить конфиденциальную информацию, например, ключи доступа в передней части, храните их в бэкэнд. –

+0

Поскольку ваш код на стороне клиента виден кем-то, вы должны определенно управлять этим в своем бэкенде. –

+0

Просто чтобы понять, о чем мы говорим. Если я, например, хочу загрузить изображение на S3 из моего углового приложения, то я не могу сделать это прямо, потому что я не могу хранить ключ доступа/секретный ключ внутри своего приложения. Сначала мне нужно отправить изображение на мой php-сервер, а оттуда на S3? – Oliver

ответ

1

Вы можете использовать плагин Кордовы SecureStorage для хранения доступа и/или сеансовых маркеров:

https://github.com/Crypho/cordova-plugin-secure-storage

Поскольку Android реализация этого безопасного хранения использует KeyStore, пользователи должны иметь безопасный экран-замок (например, отпечаток пальца, рисунок или PIN-код). Плагин предоставляет функции для проверки этого, поэтому вы сможете дать предупреждение (или заблокировать вход в систему), если это не так. Без заблокированного экрана есть no Способ безопасного сохранения ключей на Android.

+0

Спасибо @JanP, это очень интересно, и я проверяю его. Определенно опция хранения данных на устройстве. Моя забота в основном заключается в том, как я могу получить доступ к безопасному хранилищу s3 или выполнять другие подключения к серверу, не имея возможности хранить ключи доступа и пароли внутри приложения, так как они будут доступны для чтения. – Oliver

+0

Я думаю, что уровень безопасности, который вам нужен, зависит от вашей функциональности. Ковши могут быть настроены только для приема определенных типов файлов, и содержимое может быть удалено через определенное время. Но если вы хотите, чтобы ключи AWS были приватными, пусть ваше приложение извлекает ключи из вашего PHP-сервера через SSL и сохраняет их в безопасном хранилище. Они будут храниться в зашифрованном виде. При необходимости вы можете добавить проверку пользователя на ваш PHP-сервер. – JanP

+0

Я понимаю. Мой план состоит в том, чтобы сначала аутентифицировать пользователя через firebase/auth, и после успешного входа я получаю некоторые важные вары из моего php-сервера через HTTPS, я сохраняю их только внутри sessionStorage (ngStorage), пока пользователь не покинет приложение. Как только он вернется, я снова их получаю. Я не говорю о главном приложении здесь с высокими стандартами безопасности, но я хочу сохранить основы в порядке. Могу ли я работать так? – Oliver

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