2017-10-10 207 views
0

我的项目包括一个Web应用程序,一个移动应用程序和一个REST API模块。如何在移动应用程序和服务器之间保护REST API

该移动应用程序是用Ionic 3 for android制作的,并使用位于example.com/api.php地址的REST API在服务器上使用https。该API可以访问MySQL数据库。

对于访问API的用户,我必须创建API函数/注销的登录/访问权限,因为他们已经拥有在Web应用程序中创建的帐户。

主要关心的是实现安全登录。意思是说,如果有人试图在未经授权的情况下访问我的API(知道地址,函数名称或使用的参数名称)以收回错误消息。为了访问API,您必须登录并有权访问某个部分(我有多个访问级别)。 但是,如何检测访问我的REST API的用户是否已登录并具有适当的权限?

计划:

  1. 对于登录步骤 为了访问REST API我有在应用程序的用户名/密码登录。我检查凭证是否正确(如果用户存在,则确定访问级别),并根据需要(令牌)返回带有用户标识和其他参数的JWT。将电话本地存储在JWT中。

  2. 确保访问REST API函数 问题是:我该怎么做?如何从我的REST API访问安全的功能?

    • 对于我向REST API发出的每个请求,我是否也应该从本地存储器发送令牌并在服务器端验证它?
    • 如何在服务器上执行验证?我是否将令牌存储在设备上以及服务器上,并对每个请求进行比较?

非常感谢!

+0

有很多方法可以做到这一点,包括用户注册,使用令牌等。在Stack Overflow上,你应该显示你已经尝试了什么,什么不工作。有关如何发布您的问题的建议,请参阅https://stackoverflow.com/help/mcve。这样的问题往往被认为是广泛的或基于意见的,因为有很多方法可以做你正在尝试的事情。过去,我使用了令牌方法,在您登录的位置为该令牌提供所有REST请求,并且验证该令牌的服务器仍然有效,如果是,则执行请求。 –

回答

1

有多种方式可以做到这一切都取决于你。因此,我分享了我通常使用的方法,但并不是声称这是最安全的方法。

我们使用encryption,decryptionprivate key。例如:

注册用户网络服务

前。我们有4个参数1.用户名2.姓名3.电子邮件4.密码。与我的注册网络服务。我们将创建SHA256 Hash与私钥使用数据concat。那么我们会将hash密钥传递给服务器,并且在服务器端我们将使用相同的方法生成哈希密钥并将两者进行比较。

ex。字符串与私钥= usernamenameemailpasswordprivatekey sha256的字符串= 7814b2d22af647308884acff0be4c675b7f72ba000cf1e8390520100cc930e74

您可能有任何序列的数据字符串和相同的方法将与您的服务器一起工作。始终将SSL certificate用于您的服务器以获得更高的安全性。

相关问题