如何在 php 中安全地取消链接文件?

How to unlink file securly in php?

我需要使用 php 中的 unlink() 功能删除 /var/www/mysite/postImage 文件夹中的图像文件。 但我绝对担心是否有人侵入我的网站并正在使用它.. 或 .在路径中并尝试删除上层文件夹中的内容。 我正在使用 JQuery 发送路径,因为它是客户端编程,所以很危险。 我知道,我可以在上传文件时绕过点,但是如果有人通过在客户端添加点来更改路径怎么办? 我的问题是如何防止有人这样做?

拇指法则应该是,你应该最少依赖来自客户端的数据。

现在根据您的问题,您发送的似乎是要删除的完整文件路径。

所以恕我直言,您应该只发送文件名并让服务器端 php 决定(追加)要删除文件的目录。

// example
$filename = $_POST['fname']; // something like xyz.png
$filename = str_replace('/','',$filename); // strip any forward slash.

if(empty($filename)){
die('File Name Invalid'); // seems like all the characters in file name were slashes.
}

$directory = 'some/folder/that/contain/images/postImage/';
$filepath = $directory . $filename;
unlink($filepath);

现在关于其他人使用此功能,只需保留一个登录系统,并检查用户是否已登录。

  1. 确保 apache 用户有适当的权限(只能在网站目录中写入)
  2. 从路径中删除 ..,清理并验证路径是否正确。
  3. 您也可以使用 realpath() 函数。