我们正在创建一个允许用户上传大文件的表单。在移动设备和慢速连接上,上传可能需要一段时间,因此通过向用户显示进度条(或让他们知道它仍在工作)的 AJAX 调用来处理这似乎很重要。
问题出在:上传的端点是第 3 方 API,它需要我们的 API 密钥作为参数之一。这是他们文档中直接指向该部分的链接。此 API 密钥不能暴露给客户端的用户。
我的第一反应是将表单提交到我们网站上的中间 PHP 脚本,该脚本具有 API 密钥,然后将文件上传到 API。但我很确定这意味着将文件上传两次:一次到我们的服务器。然后再次从我们的服务器到 API 端点。即使表单是使用 AJAX 提交的,用户等待两倍的时间才能完成也不是一个好的结果。
那么:让用户上传文件同时保证我们的 API 密钥安全的最流畅的方法是什么?
一些可能重要也可能不重要的细节:
我们的网站是一个基于 CakePHP 框架 (v2.x) 的 PHP Web 应用程序。上传的文件是长度在 1 到 5 分钟之间的所有不同格式的视频文件。API 是一家名为 Wistia 的公司(请参阅上面的文档链接)。文件大小似乎在 3-30MB 之间。我们没有能力改变 3rd 方 API 的工作方式。