如何在发送AJAX请求时隐藏API密钥?

时间:2014-12-15 13:16:10

标签: ajax api security

我即将开始研究一个项目,它基本上是一个移动银行应用程序的Web界面。 API准备就绪,我只需要提供Web应用程序的前端部分。我打算使用Backbone / Angular / Ember,但开始担心安全性。

特别是以下。通常,每个API请求都必须包含参数method_code,该参数计算为用户令牌,方法名称和密钥API密钥的哈希值。如果我把这个参数计算的逻辑放到.js文件中,任何人都可能使用Postman甚至浏览器控制台等工具访问一些敏感数据。我该怎么办这个问题?我可以为我生成一个服务器端脚本生成method_code,但是是否可以只对我的网络应用程序的请求进行访问?

2 个答案:

答案 0 :(得分:3)

  

每个API请求必须包含一个参数method_code,该参数计算为用户令牌,方法名称和秘密API密钥的哈希值

     

我可以有一个服务器端脚本为我生成method_code,但是是否可以只对我的网络应用程序的请求进行访问?

是的,如果您不想在客户端代码中公开秘密API密钥或请求数据,那么服务器端脚本就是可行的方法。

用户令牌可能(可能)来自用户的会话cookie值?因此,只需使用服务器端方法获取method name,然后返回从method_code(仅限服务器端)和secret API key计算的user token

Same Origin Policy会阻止其他域向您的API发出请求并撤消method_code。我也假设API和前端代码在这里运行在同一个域上,但如果不是这种情况,您可以使用CORS来允许您的前端代码通过客户端读取和检索数据API。

答案 1 :(得分:0)

您可以尝试根据安全因素生成令牌并对其进行加密,并在请求中使用它来识别您的客户端和有效请求。

相关问题