Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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 图像代码执行_Php_.htaccess - Fatal编程技术网

Php 图像代码执行

Php 图像代码执行,php,.htaccess,Php,.htaccess,我有一个php图像上传脚本,允许jpg、jpeg、png和gif文件上传到另一个目录。当然,我会检查上传脚本中的mime/类型和文件扩展名,但是聪明的黑客可以轻松绕过这些 我有一个模糊的理解,不知何故,您可以将可执行代码嵌入到这些图像文件中。谷歌搜索了一个多小时,我还没有找到在标准Godaddy apache配置上执行图像内部代码的方法。我发现,如果文件类型类似于test.php.jpg,那么代码可能会执行。因此,我将特定上载文件夹的htaccess文件更改为 RewriteEngine on

我有一个php图像上传脚本,允许jpg、jpeg、png和gif文件上传到另一个目录。当然,我会检查上传脚本中的mime/类型和文件扩展名,但是聪明的黑客可以轻松绕过这些

我有一个模糊的理解,不知何故,您可以将可执行代码嵌入到这些图像文件中。谷歌搜索了一个多小时,我还没有找到在标准Godaddy apache配置上执行图像内部代码的方法。我发现,如果文件类型类似于test.php.jpg,那么代码可能会执行。因此,我将特定上载文件夹的htaccess文件更改为

RewriteEngine on
RewriteRule !^([0-9]*)[.](jpg|jpeg|gif|png)$ /error.php?

我的问题是,这是否足够,还是它仍然脆弱?如果是这样的话,您是否知道如何确保文件仅为纯图像,不包含可执行代码。

限制上载的图像具有任何执行权限(chmod a-x)可能会有所帮助。您知道是否可以在godaddy共享主机上执行此操作?谷歌所有你将要做的是完全禁用能够从你的服务器提供任何图像。包含一些可执行代码的.jpg文件本身并不危险-除非您采取步骤告诉Apache(以及底层操作系统)应将.jpg视为.exe。。。即使这样,它也会崩溃,因为一个包含可执行代码的.jpg与一个.exe并不相同。请注意:让一个名为test.php.jpg的东西执行的问题通常是因为apache中启用了“多视图”。这是内置的语言支持—因此,如果用户键入/myscript.php—并且他们是英语的,它将搜索myscript.php.en—或者如果是西班牙语的语言环境,它将尝试运行myscript.php.es。因此,在您给出的示例中,这只是一个PHP脚本,表示它是“jpg”语言。只是背景信息。:)@MarcB你什么意思我会禁用使用该代码提供的任何图像?阿伦萨雷-这很有趣。