在使用curl获取文件名之前,我需要对$_POST中的文件名进行消毒吗


Do I need to sanitize a file name in $_POST before getting it with curl?

var只是完整文件规范的文件名部分。

例如:

$file = $_POST['name'];
curl_exec("https:/example.com/some_api/".$file.".json");

顺便说一句,所有有效请求都将从一个域发布。

您不需要消毒(为了安全),因为这可能会导致安全问题(curl可能已经处理过类似的问题),但您可能需要urlencode才能使其工作。另一方面,您可能需要而不是urlencode it,但由于_POST参数自动为urldecode d,因此需要初始双重编码。

顺便说一句,这是错误的。您需要curl资源上的curl_exec,而不是URL。你想要curl_exec(curl_init($url))(但你可能需要设置选项之类的东西)。

为了安全起见,您可能需要urlencode() it。

$file = urlencode($_POST['name']); 

这样,如果有人尝试一些新奇的东西,会更安全。