如何在移动应用程序和服务器之间保护REST API

时间:2017-10-10 08:32:10

标签: rest api ionic3

我的项目包括一个Web应用程序,一个移动应用程序和一个REST API模块。

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

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

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

计划:

  1. 用于登录步骤 为了访问REST API,我必须在app中使用用户名/密码登录。我检查凭据是否正确(如果用户存在,那么我确定访问级别)并返回带有用户ID和其他参数的JWT(如果需要)(令牌)。存储在JWT的本地存储电话中。

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

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

1 个答案:

答案 0 :(得分:1)

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

我们将encryptiondecryptionprivate key一起使用。例如:

  

注册用户网络服务

离。我们有4个参数1.用户名2.名称3.电子邮件4.密码。使用我的注册网络服务。

我们将使用带私钥的数据连接创建SHA256 Hash。然后我们将hash密钥传递给服务器,在服务器端,我们将使用相同的方法生成散列密钥并比较它们。

离。带私钥的字符串= usernamenameemailpasswordprivatekey sha256 of string = 7814b2d22af647308884acff0be4c675b7f72ba000cf1e8390520100cc930e74

您可能拥有数据字符串的任何序列,并且相同的方法也适用于您的服务器。始终在服务器上使用SSL certificate以提高安全性。