gpt4 book ai didi

java - 如何在无需登录的情况下保护仅从 Android 应用程序到服务器的 Web 服务

转载 作者:行者123 更新时间:2023-12-01 08:51:26 24 4
gpt4 key购买 nike

IOS已经有这种问题了 How To Secure Web Service Without Login

但我仍然无法找到在没有用户身份验证的情况下确保 Web 服务安全的解决方案。到目前为止,我有一个专门为 Android 应用程序制作的网络服务。我希望所有 api 命中都应该只从我的 android 应用程序到服务器。没有人破解它并从 Restclient 或 postman 访问 api。服务器如何识别该请求来自 Android 应用程序(明确是开发的应用程序)并做出相应响应。

方法1我想生成一个 api key 并在请求 header 中发送该 api key ,该 header 可以在服务器端进行验证。如果 key 匹配,则服务器可以假设请求来自白名单 Android 应用程序。但问题是 key 必须存在于 Android 应用程序中,可以轻松反编译并可能被黑客攻击。攻击者获取 key 后可以直接从 app/web/ios Rest 客户端发送 api 请求。

方法2即使保存在共享首选项中,API key 也很容易被窃取。因此,我使用 jni 将其保留在 native 代码中,无法反编译,但可以对代码进行反汇编,并且可以从那里读取 key 。因此将 key 保留在 apk 内是不安全的。所以这个方法失败了。

方法3我想最初不要将原始 key 保留在应用程序内。但要使用非对称 key 。私钥保存在服务器上,从公钥生成的加密 key 保存在Android应用程序中。使用输入作为加密 key 调用 API,服务器使用私钥解密 API key 并返回该 key 作为响应。该 key 保存在应用程序范围内,并且对于后续请求,该 key 在 header 中发送。因此,从现在开始,请求变得不安全,因为攻击者不知道原始 key 。但问题来了那加密 key + 第一个 api 在 apk 中公开

黑客将调用 Api 发送加密 key 和 url 并获取实际 key 作为响应,然后该 key 可以在任何地方使用。所以问题是如何保护它,以便任何人都无法在没有登录的情况下利用资源。我必须确保点击仅来自应用程序。

方法 4 需要使用 google 登录并提供 JWT Id token ,该 token 可以在服务器端轻松验证。但我不希望用户使用谷歌登录。只是知道请求仅来自 Android 应用程序。

最佳答案

恐怕唯一可能的安全选项是选项 4。

无论如何,如果没有第三方服务来验证 token 的正确性,Android 应用程序就很容易被黑客攻击。您别无选择。

关于java - 如何在无需登录的情况下保护仅从 Android 应用程序到服务器的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42377342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com