- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个调用后端 API 服务器的 flutter 移动应用程序。这需要一个 API key 。我不想将 key 嵌入到应用程序中。如何保护 API key 和端点以防止未经授权的访问。我的应用不需要用户登录。
我能想到的唯一想法是有一个直通(nodejs)服务器来调用 API 服务器,我可以将 key 存储在该服务器上,因此它不在应用程序中
但是,现在我需要保护 Node 服务器。
有关如何执行此操作的任何建议或您是否有更好的解决方案。
感谢您的建议
例子
class UserService {
Future<List<users>> getUser() async {
var response =
await http.get(Uri.parse(user));
final int statusCode = response.statusCode;
User uData = json.decode(response.body);
return uData
}
}
App.js
var express = require('express');
var app = express();
var PORT = process.env.PORT || 3000;
app.get('/user', function(req, res) {
res.json({
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
})
});
app.listen(PORT);
最佳答案
The only idea that I can come up with is to have a pass-thru (nodejs ) server that makes the call to the API server and I can store the key on that server so it is not in the app
However, now I will need to protect the node server.
您只是将问题从保护您的 API 后端转移到必须保护直通服务器,正如我在本文 Using a Reverse Proxy to Protect Third Party APIs 中描述的那样,它实际上是一个反向代理。 :
In this article you will start by learning what Third Party APIs are, and why you shouldn’t access them directly from within your mobile app. Next you will learn what a Reverse Proxy is, followed by when and why you should use it to protect the access to the Third Party APIs used in your mobile app.
因此,实际上,通过使用直通服务器,您隐藏了 API key ,以免直接暴露给窥探者,但任何人仍然可以通过直通服务器访问您的后端 API,即使您还保护了对通过访问 key (API key 、 token 等)获取它,因为他们将通过逆向工程技术或 MitM 攻击提取访问 key ,就像我在我写的一些文章中描述的那样:
Steal that Api Key with a Man in the Middle Attack :
In order to help to demonstrate how to steal an API key, I have built and released in Github the Currency Converter Demo app for Android, which uses the same JNI/NDK technique we used in the earlier Android Hide Secrets app to hide the API key.
So, in this article you will learn how to setup and run a MitM attack to intercept https traffic in a mobile device under your control, so that you can steal the API key. Finally, you will see at a high level how MitM attacks can be mitigated.
How to Extract an API key from a Mobile App with Static Binary Analysis :
The range of open source tools available for reverse engineering is huge, and we really can't scratch the surface of this topic in this article, but instead we will focus in using the Mobile Security Framework(MobSF) to demonstrate how to reverse engineer the APK of our mobile app. MobSF is a collection of open source tools that present their results in an attractive dashboard, but the same tools used under the hood within MobSF and elsewhere can be used individually to achieve the same results.
During this article we will use the Android Hide Secrets research repository that is a dummy mobile app with API keys hidden using several different techniques.
我强烈建议任何人阅读上述文章,以熟悉从移动应用程序中提取 secret 的一些可能方法,因为您将学习几种隐藏这些 secret 的方法及其权衡。
Any suggestion on how to do this...
因此,任何在客户端运行并需要一些 secret 才能访问 API 的东西都可能以不同的方式被滥用,您可以在 this series 上了解更多信息关于移动 API 安全技术的文章。本文将向您介绍如何使用 API key 、用户访问 token 、HMAC 和 TLS Pinning 来保护 API 以及如何绕过它们。
要解决什么访问您的移动应用程序的问题,您需要使用我在上面提到的关于移动 API 安全技术的系列文章中提到的一个或所有解决方案,并且接受它们可以只会让未经授权的访问您的 API 服务器更难绕过,但并非不可能。
...or do you have a better solution.
可以通过使用移动应用证明解决方案来采用更好的解决方案,该解决方案将使 API 服务器知道只接收来自真实移动应用的请求并了解更多信息我建议您阅读 this answer我给出了如何为移动应用程序保护 API REST? 的问题,尤其是加固和屏蔽移动应用程序、保护 API 服务器部分> 和一个可能更好的解决方案。
在任何对安全问题的回答中,我总是喜欢引用 OWASP 基金会的出色工作。
The OWASP API Security Project seeks to provide value to software developers and security assessors by underscoring the potential risks in insecure APIs, and illustrating how these risks may be mitigated. In order to facilitate this goal, the OWASP API Security Project will create and maintain a Top 10 API Security Risks document, as well as a documentation portal for best practices when creating or assessing APIs.
OWASP Mobile Security Project - Top 10 risks
The OWASP Mobile Security Project is a centralized resource intended to give developers and security teams the resources they need to build and maintain secure mobile applications. Through the project, our goal is to classify mobile security risks and provide developmental controls to reduce their impact or likelihood of exploitation.
OWASP - Mobile Security Testing Guide :
The Mobile Security Testing Guide (MSTG) is a comprehensive manual for mobile app security development, testing and reverse engineering.
关于java - 你如何保护 flutter 中的 restful api 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68808669/
在 spring boot 2 应用程序中,我正在尝试访问执行器端点/beans,就像我之前在 Spring boot 1.5.* 应用程序中所做的那样。但我做不到。此外,我没有在 log.INFO
我正在为资源 items 编写端点,它是 applications 的子资源,如下所示:applications/{:id}/items。项目和应用程序都具有除名称之外的其他属性。 我创造了 GET
我正在创建一个 API,其中基于经过身份验证的用户可以更改对象的不同属性的权限。 解决这个问题的常用方法是什么? 我应该有这样的端点吗 /admin/users 和 /users 具有不同的 API
也许(希望如此)我错过了一些非常简单的东西,但我似乎无法弄清楚。 我有一组我想放在 nghttpx 代理后面的 gRPC 服务。为此,我需要能够使用非根 url 上的 channel 配置我的客户端。
我没有找到法定存款的历史记录(来自银行卡), 这里只有加密存款:https://prnt.sc/ttdwc2= ) 例如,在我的银行帐户界面中,我在 5 月 12 日找到了存款,但在这里找不到...
我很好奇普罗米修斯的工作原理。使用 Prometheus 界面,我可以看到一个下拉列表,我认为其中包含所有可用的指标。但是,我无法访问列出所有抓取的指标的指标端点。 http://targethost
是否可以从 apollo-server-express 上的 GraphQL 端点触发浏览器中的文件下载?应用? 我有一个用标准 express 写的端点 app.get函数(见下文),但我想利用 G
有谁知道在一个请求中获取您上传到媒体库的所有图像的端点吗?我将 next js 与 Strapi 一起使用,需要一种方法来从媒体库中获取所有图像,但似乎没有任何相关文档 最佳答案 /api/上传 GE
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this qu
我编写了一个简单的 HTTP 监听器并将其部署在 Heroku 应用程序中。我确保在 $PORT 中绑定(bind)端口。 现在,我尝试使用 url name-of-my-app.herokuapp.
我正在尝试构建一个安全系统,用于将数据从客户端 Android 应用程序传输到运行 PHP 的网络服务器。 我想做的是确保系统是加密安全的,这样来自应用程序的消息可以被验证为实际上来自应用程序本身,而
我是 Go 编程语言的新手。尝试使用 gousb访问爱普生收据打印机。 因此,我从存储库中获取了一些示例代码,并对其进行了一些调整,以验证我是否可以访问打印机。 我可以看到打印机并枚举端点。我收到此输
我正在使用 azure API 端点。 ....azure-api.net/...。当我尝试使用 Charles 代理查看 HTTP 请求/响应时,HTTP 响应为空。当我关闭代理时,该请求有效。 我
我正在关注这个tutorial了解用户成功登录后如何获取 token 。 到目前为止我已完成的步骤: 我已使用此 URL 注册了自己(用户名和密码):https://MyCompany.b2clogi
给定一个以 .svc 结尾且应该运行 SOAP 网络服务的 URL,我如何从中获取一些数据? 我试过: 通过网络浏览器访问它 通过 Python 的库 Zeep 访问它 通过 Microsoft 实用
我认为公共(public) REST API(例如注册端点)无法验证用户身份是否正确?例如,我们的端点应该只接受来 self 们的移动应用程序和 future 网络应用程序的请求。 我很确定这在逻辑上
在自托管服务中,我想使用 App.config 中指定的端点(如果存在),或者如果 App.config 为空则使用代码中指定的默认端点。我该怎么做? 编辑:澄清一下,这是在服务器(服务)端使用 Se
我需要在我的后端服务器中实现实时开发者通知,以了解我的用户所做的任何购买修改(暂停帐户、续订订阅等)。我的后端服务器是用 Delphi 制作的,没有现成的 Delphi 库,但是,我可以制作一个 HT
我创建了一个 Kubernetes 服务: [root@Infra-1 kubernetes]# kubectl describe service gitlab Name: git
我正在开发一个应用程序,我需要将对象列表传递给 REST 端点,该端点将进行一些计算并将结果返回给调用者。 问题更多是关于如何处理这种情况的哲学问题? 在 GET 请求中传递大量有效负载是一个坏主意。
我是一名优秀的程序员,十分优秀!