如何在 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);
现在关于其他人使用此功能,只需保留一个登录系统,并检查用户是否已登录。
- 确保 apache 用户有适当的权限(只能在网站目录中写入)
- 从路径中删除
..
,清理并验证路径是否正确。
- 您也可以使用 realpath() 函数。
我需要使用 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);
现在关于其他人使用此功能,只需保留一个登录系统,并检查用户是否已登录。
- 确保 apache 用户有适当的权限(只能在网站目录中写入)
- 从路径中删除
..
,清理并验证路径是否正确。 - 您也可以使用 realpath() 函数。