是否足以安全地转义文件名并防止打开它们?

问题描述 投票:0回答:1

我有一个项目,其中有登录/注销功能,经过身份验证的用户可以上传,下载和删除他们拥有的文件。

我的问题是:我的项目的文件部分是否有足够的安全性来使用htmlentities()转义文件名,并防止用户打开文件所在的目录

<Directorymatch /cloud/>
        Order deny,allow
        Deny from all
</Directorymatch>

这意味着如果上载了.php文件,则用户无法在我的服务器上运行该文件。此外,如果文件名包含脚本/ html,那么它不会取消。

在安全方面我还缺少什么?我可能会成为这个盗版“谷歌驱动器”的唯一用户,但我想认真对待安全问题。我错过了什么?

php
1个回答
0
投票

在上传之前,您需要确保上传的文件经过良好的清理和验证。

finfo_ *库会很好,但它可以使用php> = 5.3.0版本。下面的Stackoverflow链接提供了有关如何使用最佳安全措施验证和保护文件上载的最佳解决方案。 Source Link

您可能需要在上传目录中关闭php引擎。所以你可以创建一个php.ini文件并输入这行代码

engine = off

更新部分

您可以使用shell_exec()exec()在本地测试内容,但是您必须在生产中禁用它们,因为攻击者可以使用这些shell命令来获取可能导致整个网络受损的系统或文件信息。

对于Instance,请查看下面的shell_exec()代码

<?php 

// Use ls command to shell_exec 
// function 
$output = shell_exec('ls'); 

// Display the list of all file 
// and directory 
echo "<pre>$output</pre>"; 
?>

输出:

transaction.php
index.html
moneyupdate.php

现在来看看下面的Exec()代码

<?php 
// (on a system with the "iamexecfunction" executable in the path) 
echo exec('iamexecfunction'); 
?> 

输出:

transaction.php

所以简而言之,由你来决定。如果你在共享主机上,请你需要禁用它们,因为你的托管邻居可能会互相干扰,但如果你是VPS或Dedicated,你可以自己尝试一下

© www.soinside.com 2019 - 2024. All rights reserved.