Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CMS上传图片文件安全问题_Php_Mysql_File_Upload - Fatal编程技术网

Php CMS上传图片文件安全问题

Php CMS上传图片文件安全问题,php,mysql,file,upload,Php,Mysql,File,Upload,如果有人能帮忙,我有一个简短的问题。我正在为一个客户端构建一个CMS,在那里他们可以登录,并更改所有存储在数据库中的内容(包括通过上传文件格式上传的图片) 我的问题。。我一直在研究,到处都说我需要将图像文件存储在根文件夹之外。在我的情况下,如果只有少数人将上传文件,在管理面板中,他们必须首先登录到该网站,这是必要的吗?我已经在客户端采取了措施,确保文件类型、大小、扩展名等。。。然后在将文件添加到我的数据库之前更改文件名。。。这足够安全吗,还是我在路上自找麻烦 谢谢将上传的内容存储在浏览器无法直接

如果有人能帮忙,我有一个简短的问题。我正在为一个客户端构建一个CMS,在那里他们可以登录,并更改所有存储在数据库中的内容(包括通过上传文件格式上传的图片)

我的问题。。我一直在研究,到处都说我需要将图像文件存储在根文件夹之外。在我的情况下,如果只有少数人将上传文件,在管理面板中,他们必须首先登录到该网站,这是必要的吗?我已经在客户端采取了措施,确保文件类型、大小、扩展名等。。。然后在将文件添加到我的数据库之前更改文件名。。。这足够安全吗,还是我在路上自找麻烦


谢谢

将上传的内容存储在浏览器无法直接寻址的地方通常是个好主意。你不希望有人上传一个.php文件(或者你忘记检查的其他格式),然后通过拉直接url来执行它。相反,您应该有一个传递文件的包装器脚本

因此,是的,这是一个好主意,但不是“必要的”(根据字典对这个词的定义)。如果您认为管理区域在其他方面是安全的,那么您当然可以选择不这样做

也就是说,在你描述的场景中,只要它只有管理员用户可以上传图片,我认为这两种方式都没什么大不了的


顺便说一句,如果您还没有,请通过图像的文件头或内容而不是文件扩展名来验证图像。

如果图像缩进仅供管理员查看,则必须位于安全文件夹中(web目录之外,或由htaccess保护)。如果图像将显示在主站点(如果有)上,则应该是公共的。如果您正在制作文件浏览器,则可能只需要上载文件的目录。但它可以在您的web根目录中,没有问题。你没有试图限制对文件的访问,对吗?图片将在主网站上查看,是的。如果我把它们放在根目录中,它就不会为上传的钓鱼脚本、病毒等打开网站?如果其中一个“少数人”的帐户信息被偷了怎么办?可能他们在多个站点上使用相同的登录名和密码,其他站点被破坏,您的站点现在被破坏。然后,任何拥有凭据的人都可以登录并将任何内容上载到管理面板。就验证而言,您不能依赖任何客户端。这对用户来说只是一种方便,所以他们不必在看到错误之前加载另一个页面。处理上传时,还必须签入PHP。唯一可以确定的是,将图片放在Web服务器无法运行脚本的地方。谢谢。为了安全起见,我想我会把它放在外面。虽然我确信有一种方法也会受到这样的攻击,但这会更加困难。