Ajax到API而不暴露KEY

时间:2012-02-16 14:17:02

标签: php ajax api curl secret-key

我很确定我要问的答案是否定的,但也许有人可以给我一个不同的想法,所以我无论如何都要问。

我正在开发一个控制面板,通过API调用从第三方Web服务获取信息。我可以使用AJAX进行调用,它会在浏览器上以毫秒为单位返回结果,但我会公开此服务的API密钥。即使这是一个访问受限的内部网,员工也可以嗅探并获取私有API密钥,仅使用Safari的活动窗口。员工是值得信赖的,但我不想仅仅依靠信任来冒险发展安全。

我现在正在做的是AJAXing一个php,它使用CURL调用进行调用,但这需要大约2或3秒钟:不是php本身,共享主机进入第三方服务器和背部。

有没有办法让浏览器直接向API发出请求而不暴露私钥?我认为根据定义它是不可能的,但我分享了这个场景,所以也许有人有更好的想法(我试图避免缓存,因为信息是由第二个引起的变化)

不是问题我对此有疑问:如果我在Mac OS终端或本地Apache中通过CURL进行API调用,每次获取结果需要12秒,但浏览器完全相同计算机和连接以毫秒为单位获得它。我不太熟悉CURL如何在内部工作,但是CURL是一种缓慢的机制,或者在我的Mac上运行不佳。

由于

2 个答案:

答案 0 :(得分:1)

不,当浏览器请求服务时,用户可以随时嗅探密钥。所以使用PHP作为代理是一个很好的解决方案。

答案 1 :(得分:1)

不,因为javascript代码被发送到客户端的机器并在其上运行,所以无法以某种方式暴露API密钥。加密/混淆它将是毫无意义的,因为知识渊博的用户可以使用标题查看器/数据包嗅探器来从API请求中提取明文密钥。

不向用户公开密钥的唯一方法是让用户不要抓住它,这意味着代理请求。