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

时间:2015-06-14 08:53:08

标签: php security unlink

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

2 个答案:

答案 0 :(得分:1)

Thumb规则应该是这样,你应该至少依赖客户端的数据。

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

所以恕我直言,你应该只发送文件名,让服务器端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 :(得分:1)

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