我很确定我要问的答案是不,但是也许有人可以给我一个不同的主意,所以我还是要问。

我正在开发一个控制面板,该控制面板通过API呼叫获取第三方WebService的信息。我可以打电话给Ajax,以返回浏览器上毫秒的结果,但我将公开此服务的API键。即使这是一个具有限制访问权限的Intranet,但员工也可以嗅探并获取私有API密钥,例如,只能观看Safari的活动窗口。员工值得信赖,但我不想冒着我的发展安全风险。

我现在正在做的是Ajax ajax php,该php用卷曲调用来调用,但要做大约2或3秒钟的时间:不是PHP本身,共享托管将转移到第三方服务器和返回。

有没有办法使浏览器直接向API进行请求而无需公开私钥?我认为从定义上讲,这是不可能的,但是我正在分享场景,所以也许有人有一个更好的主意(我试图避免缓存,因为信息在第二秒之前会更改)

不是问题,我对此有疑问:如果我在Mac OS终端或本地Apache上进行API调用,则每次都需要12秒钟才能获得结果,但是在完全相同的计算机和连接中浏览器以毫秒为单位。我对卷发的内部工作方式不太熟悉,但要么curl是一种缓慢的机制,要么在我的Mac中工作不佳。

谢谢

有帮助吗?

解决方案

不,由于JavaScript代码已发送到客户端的计算机上并运行,因此无法以某种方式公开API密钥。加密/混淆,这将是毫无意义的,因为知识渊博的用户可以使用标头查看器/数据包sniffer从API请求中提取明文键。

不让用户透露密钥的唯一方法不是让用户掌握它,这意味着代表请求。

其他提示

不,当浏览器请求服务时,用户可以将密钥嗅到。因此,将PHP用作代理是一个很好的解决方案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top