我即将开始做一个项目,它基本上是一个移动银行应用程序的网络接口。API已经准备好了,我只需要提供web应用程序的前端部分。我本来打算用主干/角形/Ember来制作它,但开始担心安全性。
特别是以下几点。通常,每个API请求都必须包含一个参数method_code
,该参数以用户令牌、方法名和秘密API密钥的散列形式计算。如果我把计算这个参数的逻辑放在一个.js文件中,任何人都可以使用诸如邮递员甚至浏览器控制台之类的工具来访问一些敏感数据。我该如何处理这个问题呢?我可以有一个服务器端脚本为我生成method_code
,但是否有可能只让我的web应用程序请求访问它呢?
发布于 2014-12-16 01:42:19
每个API请求都必须包含一个参数method_code,该参数以用户令牌、方法名称和秘密API密钥的散列形式计算。 我可以有一个服务器端脚本为我生成method_code,但是否有可能只让我的web应用程序请求访问它呢?
是的,如果您不想在客户端代码或请求数据中公开秘密API密钥,那么服务器端脚本就是最好的选择。
用户令牌可以(大概)来自用户的会话cookie值吗?因此,只需有一个服务器端方法,该方法接受method name
,然后返回根据secret API key
(仅保留服务器端)和user token
计算的method_code
。
同一原产地政策将阻止另一个域向API发出请求并撤回method_code
。我还假设API和前端代码在这里运行在同一个域上,但是如果不是这样的话,您可以使用CORS来允许前端代码通过API读取和撤回数据客户端。
发布于 2014-12-15 05:22:57
您可以尝试根据安全因素生成令牌,并对其进行加密,并在请求中使用它来标识客户端和有效请求。
https://stackoverflow.com/questions/27484977
复制相似问题