【问题标题】:How to secure a REST API between mobile app and the server如何保护移动应用程序和服务器之间的 REST API
【发布时间】:2018-03-21 14:01:54
【问题描述】:

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

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

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

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

计划:

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

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

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

非常感谢!

【问题讨论】:

  • 有很多方法可以做到这一点,包括注册用户、使用令牌等。在 Stack Overflow 上,您应该展示您尝试过的内容和无效的内容。有关如何发布问题的建议,请参阅 stackoverflow.com/help/mcve。像这样的问题往往被认为是广泛的或基于意见的,因为有很多方法可以做你正在尝试的事情。过去我使用过令牌方法,您在其中登录,为所有 REST 请求提供该令牌,服务器验证该令牌是否仍然有效,如果是,则执行请求。

标签: rest api ionic3


【解决方案1】:

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

我们使用encryptiondecryptionprivate key。例如:

注册用户网络服务

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

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

例如。带私钥的字符串 = usernamenameemailpasswordprivatekey 字符串的 sha256 = 7814b2d22af647308884acff0be4c675b7f72ba000cf1e8390520100cc930e74

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

【讨论】:

    猜你喜欢
    • 2013-04-25
    • 2013-06-25
    • 2020-04-19
    • 2011-12-18
    • 2015-12-29
    • 2011-05-27
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多