PHP图像上传安全问题
最近,我的网站上有一个表单上传了恶意代码,我一直有问题。此表单应仅允许上载图像。在阅读了一些内容之后,我实现了以下检查PHP图像上传安全问题,php,security,upload,Php,Security,Upload,最近,我的网站上有一个表单上传了恶意代码,我一直有问题。此表单应仅允许上载图像。在阅读了一些内容之后,我实现了以下检查 对tmp上载的文件使用getimageresize()。如果返回false,则终止上载进程 chmod上传的图像到644,使其无法执行 上载的文件名被更改(前面有一个随机数),因此它与用户上载的文件名不完全相同 我读到在服务器端检查mime类型也是一个好主意。不过,我似乎无法访问服务器上的finfo_file()或mime_content_type() 这些听起来像是阻止恶意代
正如我所说的,你的第一个建议应该会奏效。而且,#3是没有用的,当你在DOM中插入图像时,你会用随机数公开新名称:)这是基于Eduard Luca所说的东西。我建议你
.php
文件,这一点将变得非常重要<Directory "/path/to/upload">
php_admin_flag engine off
AllowOverride None
DirectoryIndex Off
RewriteEngine On
RewriteRule \.php$ - [F,L]
</Directory>
php_管理_标志引擎关闭
不允许超限
目录索引关闭
重新启动发动机
重写规则\.php$-[F,L]
为什么不把它们上传到网络浏览器无法到达的地方呢?上传后,它们需要显示在网站上。我似乎无法通过我的电话访问webroot上面的内容。谢谢您的反馈。Re:chmod on the file(文件上的chmod)-这是否真的可以删除所有X位,这样,如果恶意文件真的构成了它,就没有人可以执行它了?老实说,我不知道有什么方法可以通过web服务器在远程服务器上运行文件,但是如果有,是的,chmoding应该是安全的。谢谢。对于如何检查非图像文件以确保它们不是恶意的,我仍然有点困惑。假设我必须允许上传PDF,我显然不能使用getimageresize()函数来验证文件。我唯一的想法是,您需要获取一个PDF库并调用其中一个方法,就像对图像使用
getimagesize
一样。如果该方法返回false,则它不是有效的PDF。噢#2非常有趣。。。这是在.htaccess文件中完成的吗?对不起,我对站点配置选项不是很了解。这会处理上传目录中的所有子目录吗,还是它们都必须单独完成?您绝对不能将php\u admin\u标志
与.htaccess
一起使用。这是一个Apache级别的配置。