我正在尝试将HTML5移动电话空间应用安全地连接到数据库(MongoDB)。该应用程序将在应用商店中,没有人可以看到代码。我对此有几个问题。据我所知,有两种方法可以做到这一点,一种是使用RESTful服务,另一种是使用数据库驱动程序(我遇到了这种方法的问题,因此使用了HTTP请求方法)。所以这是我的问题,
当我使用RESTful服务连接到数据库时,我必须包含HTTP查询,其中包含API密钥。我的问题:以这种方式使用它是否安全?我打算在数据库上存储一些敏感信息,但我打算加密它。但我不希望任何人看到我的API KEY,因为如果有人看到API密钥,那么很容易访问数据库上的信息。 API KEY在其中一个javascript文件中进行了硬编码。
有没有一种安全的方法在javascript中使用REST API密钥?
答案 0 :(得分:2)
最好的方法是在app(oAuth 2.0)和DB(Client)之间添加Resource Server图层。这里的“资源所有者”是最终用户。
您可以使用“隐式”,“资源所有者密码凭据”或“客户端凭据”。请阅读“Access Tokens”和“Refresh Tokens”。
抽象协议流程(从here复制)
+--------+ +---------------+
| |--(A)- Authorization Request ->| Resource |
| | | Owner |
| |<-(B)-- Authorization Grant ---| |
| | +---------------+
| |
| | +---------------+
| |--(C)-- Authorization Grant -->| Authorization |
| Client | | Server |
| |<-(D)----- Access Token -------| |
| | +---------------+
| |
| | +---------------+
| |--(E)----- Access Token ------>| Resource |
| | | Server |
| |<-(F)--- Protected Resource ---| |
+--------+ +---------------+