使用秘密查询变量上传AJAX文件

时间:2013-07-25 14:52:34

标签: php ajax api security file-upload

我们正在创建一个允许用户上传大文件的表单。在移动设备和慢速连接上,上传可能需要一段时间,因此通过向用户显示进度条(或者让他们知道它仍然有效)的AJAX调用来处理这一点似乎很重要。

问题在于:上传的端点是第三方API,它希望我们的秘密API密钥作为参数之一。这是一个直接链接到the section in their documentation的链接。此API密钥无法向客户端的用户公开。

我的第一直觉是将表单提交到我们网站上的中间PHP脚本,该脚本具有API密钥,然后将文件上传到API。但我很确定这意味着将文件上传两次:一次到我们的服务器。然后再从我们的服务器到API端点。即使表单是使用AJAX提交的,但用户等待两倍的完成时间并不是一个好结果。

所以:让用户上传文件同时保持API密钥安全的最顺畅的方法是什么?

一些可能重要或可能不重要的细节:
我们的站点是一个基于CakePHP框架(v2.x)构建的PHP Web应用程序。上传的文件是1到5分钟之间所有不同格式的视频文件。 API是一家名为Wistia的公司(请参阅上面文档的链接)。文件大小似乎在3-30MB之间。我们无法更改第三方API的工作方式。

3 个答案:

答案 0 :(得分:0)

上传两次应该不是问题 - 应该吗?

从服务器到API - 这就是服务器和API的用途 - 交换数据。

Javascript不适用于此。

答案 1 :(得分:0)

无法在客户端上隐藏它,因此您的第一直觉是正确的 - 您需要从服务器转发文件。

答案 2 :(得分:0)

应该可以从php://输入读取原始帖子流,你可以从那里获取上传的文件(如果你可以解析它:))并立即开始上传到api服务器。

但即使移动设备和脚本之间的通信速度很慢,您的脚本也可能会快速上传到api服务器。那真的需要吗?