Я разрабатываю мобильное приложение, которое работает против удаленного сервера.
В моем приложении каждый из моих пользователей имеет пользовательские данные, которые содержат некоторые конфиденциальные данные. (хранится в db). Мой главный вопрос заключается в том, что, как только мой пользователь регистрируется/регистрируется в моем приложении, я хотел бы получить данные пользователя с сервера безопасным способом. В настоящее время я возвращаю данные JSON, используя простые запросы GET, такие как /getuser/id. Это явно не лучший способ вернуть конфиденциальные данные, поскольку он открыт для всех.
Простой поток для рассмотрения: пользователь регистрируется, получает данные пользователя с сервера, сохраняет данные на пользовательском устройстве.
У меня есть некоторые предложения для вас,
(1) Use secure encryption/decryption algorithms like AES-256 with user credentials based cryptographic key for sensitive data transmission in client server architecture.
For more security you can use public key algorithm (like RSA-1024) to exchange symmetric key(Here AES) between client server.
1. @SERVER -----> generate Public-Private Key(RSA) ---> Send public key to Client.<br/>
2. @CLIENT------> generate unique AES key using hash(username+passwd+salt)----> Encrypt Hash Value using RSA public key ---> Send Encrypt value to SERVER<br/>
3. @SERVER------> decrypt Encrpted AES Key using private key(RSA). Now SERVER have got AES key & CLIENT have it already.<br/>
4. SERVER <------AES Encryption/Decryption----> CLIENT<br/>
(2) Use SSL/TLS protocol for transport layer security.
(3) Use POST method for improved security.
(4) Code obfuscation & jumble algorithms can be applied for secure key generation to avoid reverse engineering attacks upto a level.