3 回答
TA贡献1804条经验 获得超3个赞
非常安全。PHP会将其读取为纯数据,它不会尝试执行它。curl
只需将其传递给DropBox API。到那时,这是DropBox的问题(如果他们执行用户上传的代码,这将是非常令人惊讶的,除非他们存在严重的安全漏洞)。
TA贡献1712条经验 获得超3个赞
如果您使用的是Linux或MacOS *或* BSD,并且不关心Windows兼容性,那么这是正确的方法,但是我仍然想对您的代码进行检查:
如果您曾经编写过任何可能在Windows上运行的代码,请养成使用fopen模式rb而不是的习惯r,因为rWindows上的fopen模式可能会破坏二进制数据(并且按octet-stream标题显示,它是二进制数据),并且linux / macos / * BSD全部对待方式r和rb方式相同,因此
$fp = fopen($localFile, 'rb');
这条线
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"authorization: Bearer MY-TOKEN",
"content-type: application/octet-stream",
"dropbox-api-arg: {\"path\": \"/tmp/a.txt\",\"mode\": \"add\",\"autorename\": true,\"mute\": false,\"strict_conflict\": false}"
));
应该实际阅读
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"authorization: Bearer MY-TOKEN",
"content-type: application/octet-stream",
"dropbox-api-arg: " . json_encode(array(
'path' => '/tmp/a.txt',
'mode' => 'add',
'autorename' => true,
'mute' => false,
'strict_conflict' => false,
))
));
它更具可读性,更可维护且更易于修改。尽管我必须说将数据作为HTTP HEADER放置是Dropbox的错误设计决定,但HTTP头中的字符是非法的,而对于大多数文件系统标准而言,这些头在文件名中都是完全合法的,这意味着我怀疑可以制作包含以下内容的有效json:一个有效的文件名,不能使用http-header-encoded ..他们应该使用multipart / form-data,并将文件和json放在2个单独的表单变量imo中。
- 3 回答
- 0 关注
- 168 浏览
添加回答
举报