如何检查,而不必通过orfile permissions
运行操作系统特定的命令?passthru()
exec()
Unkwntech
问问题
20068 次
5 回答
22
使用fileperms()函数
clearstatcache();
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);
于 2008-08-21T08:10:44.817 回答
12
您可以使用is_readable()、is_executable()等命令。
于 2008-08-21T08:09:46.720 回答
6
真正的编码人员使用按位操作,而不是字符串;)这是处理权限的更优雅的方式:
function checkPerms($path)
{
clearstatcache(null, $path);
return decoct( fileperms($path) & 0777 );
}
于 2013-04-18T13:12:17.670 回答
1
使用fileperms()函数和子字符串:
substr(decoct(fileperms(__DIR__)), -4); // 0777
substr(decoct(fileperms(__DIR__)), -3); // 777
对于文件:
substr(decoct(fileperms(__FILE__)), -4); // 0644
substr(decoct(fileperms(__FILE__)), -3); // 644
用您的路径或变量替换__FILE__
和__DIR__
于 2012-07-11T13:58:25.497 回答
0
你想通过检查文件权限来做什么?
在编写安全代码时,“检查,然后执行”任何事情几乎总是不正确的。原因是在检查你是否可以做某事和实际做某事之间,系统的状态可能会发生变化,以至于做它会产生不同的结果。
例如,如果您在写入之前检查文件是否存在,请不要检查您是否写入文件成功(或不要检查足够详细的方式),然后取决于您写入的文件的内容,您实际上可能正在读取攻击者编写的文件。
因此,与其检查文件权限,不如在权限检查成功时做任何你想做的事情,并优雅地处理错误。
于 2008-08-21T08:09:41.993 回答