我即将开始研究一个项目,它基本上是一个移动银行应用程序的Web界面。 API准备就绪,我只需要提供Web应用程序的前端部分。我打算使用Backbone / Angular / Ember,但开始担心安全性。
特别是以下。通常,每个API请求都必须包含参数method_code
,该参数计算为用户令牌,方法名称和密钥API密钥的哈希值。如果我把这个参数计算的逻辑放到.js文件中,任何人都可能使用Postman甚至浏览器控制台等工具访问一些敏感数据。我该怎么办这个问题?我可以为我生成一个服务器端脚本生成method_code
,但是是否可以只对我的网络应用程序的请求进行访问?
答案 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)
您可以尝试根据安全因素生成令牌并对其进行加密,并在请求中使用它来识别您的客户端和有效请求。