如何在php中安全地解除文件链接?
我需要用php中的如何在php中安全地解除文件链接?,php,security,unlink,Php,Security,Unlink,我需要用php中的unlink()函数删除我的/var/www/mysite/postmage文件夹中的图像文件。 但我绝对担心如果有人侵入我的网站并使用它。。或在路径中,尝试删除上层文件夹中的内容。 我使用JQuery发送路径,因为这是客户端编程,所以很危险。 我知道,我可以在上传文件时绕过点,但如果有人通过在客户端添加点来更改路径,该怎么办? 我的问题是如何防止有人这样做?经验法则应该是,您应该至少依赖客户端的数据 现在根据您的问题,您似乎正在发送要删除的完整文件路径 // example
unlink()
函数删除我的/var/www/mysite/postmage
文件夹中的图像文件。
但我绝对担心如果有人侵入我的网站并使用它。。或在路径中,尝试删除上层文件夹中的内容。
我使用JQuery发送路径,因为这是客户端编程,所以很危险。
我知道,我可以在上传文件时绕过点,但如果有人通过在客户端添加点来更改路径,该怎么办?
我的问题是如何防止有人这样做?经验法则应该是,您应该至少依赖客户端的数据
现在根据您的问题,您似乎正在发送要删除的完整文件路径
// 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);
因此,IMHO,您应该只发送文件名,让服务器端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);
现在关于其他人使用此功能,只需保留一个登录系统,并检查用户是否已登录
。
,如果路径正确,则清理并验证路径这在Windows系统上失败,因为
\
是目录分隔符。当然,这只是一个概念证明,旨在给出一个粗略的想法,人们可以随时即兴使用stripslashes()
和目录分隔符
等。因为OP没有发布任何代码,所以我只留下我的示例,谢谢你指出。Windows允许\
和/
作为目录分隔符。单独使用目录\u分隔符
不能解决这个问题。我的意思是如果代码添加了$filename=stripslashes($filename)代码>在第4行,这不就足够了吗?一个basename
也足够了。相关问题: