ajax到API而不暴露钥匙
-
26-10-2019 - |
题
我很确定我要问的答案是不,但是也许有人可以给我一个不同的主意,所以我还是要问。
我正在开发一个控制面板,该控制面板通过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用作代理是一个很好的解决方案。
不隶属于 StackOverflow