导航:首页 > 编程语言 > php程序与图片分离

php程序与图片分离

发布时间:2025-07-27 17:01:08

Ⅰ PNG图片中植入php代码

PNG图片中植入PHP代码的方式

在PNG图片中植入PHP代码,通常是在存在文件上传漏洞的情况下实现的,这些漏洞允许攻击者上传包含恶意代码的文件。根据防护水平的不同,存在多种代码植入方式。以下是四种主要的PNG图片代码植入方式:

一、基础的PNG图片代码植入

这种方式通常发生在没有严格防护的文件上传功能中。攻击者可以通过以下两种方法在PNG图片中植入PHP代码:

  1. PNG注释:PNG图片格式允许添加注释到文件中,这些注释可以保存一些元数据。攻击者可以使用工具(如exiftool)在PNG图片中添加注释,并将PHP代码嵌入其中。然后,将文件后缀从PNG修改为PHP并上传,即可实现PHP代码的执行。

  2. 直接附加:攻击者还可以通过echo命令直接将PHP代码附加到PNG文件的末尾,并修改文件后缀为PHP进行上传。

二、PHP-GD文件压缩代码植入

当图片文件被上传后,服务器可能会使用PHP-GD库对图片进行裁剪、压缩或格式转换。在这种情况下,直接代码植入的PNG图片经过压缩后会失去植入的代码。因此,攻击者需要采用更隐蔽的方式:

  1. PLTE块:PNG文件包含关键块和附加数据块。关键块是PNG文件的必要信息块,而附加数据块则不是必需的。在压缩过程中,附加数据块的内容会被删除以减小文件大小。因此,攻击者可以将PHP代码植入到关键块中的PLTE块(调色板)里。PLTE块包含1到256的调色板入口,每三个字节构成一组(Red、Green、Blue),因此理论上可以插入768字节的代码(需被3整除)。

综上所述,根据PNG图片处理方式的不同,攻击者可以采用不同的代码植入方式。这些方式都利用了文件上传漏洞和图片处理过程中的安全缺陷,从而实现了PHP代码的执行。因此,在开发过程中,应严格检查文件上传功能的安全性,避免这些漏洞的出现。

Ⅱ 求php图片缩放处理函数

在PHP网站开发过程中,如果建立的网站涉及大量的图片处理,必然涉及到图片的上传和缩放,保持图片不失真,进行图片缩放。使用之前需要下载安装GD库,以支持PHP图片处理。下面结合代码讲解具体的PHP图片缩放处理的思路。
function resizeImage($im,$maxwidth,$maxheight,$name,$filetype)
{
$pic_width = imagesx($im);
$pic_height = imagesy($im);

if(($maxwidth && $pic_width > $maxwidth) ($maxheight && $pic_height > $maxheight))
{
if($maxwidth && $pic_width>$maxwidth)
{
$widthratio = $maxwidth/$pic_width;
$resizewidth_tag = true;
}

if($maxheight && $pic_height>$maxheight)
{
$heightratio = $maxheight/$pic_height;
$resizeheight_tag = true;
}

if($resizewidth_tag && $resizeheight_tag)
{
if($widthratio<$heightratio)
$ratio = $widthratio;
else
$ratio = $heightratio;
}

if($resizewidth_tag && !$resizeheight_tag)
$ratio = $widthratio;
if($resizeheight_tag && !$resizewidth_tag)
$ratio = $heightratio;

$newwidth = $pic_width * $ratio;
$newheight = $pic_height * $ratio;

if(function_exists("imageresampled"))
{
$newim = imagecreatetruecolor($newwidth,$newheight);
imageresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
}
else
{
$newim = imagecreate($newwidth,$newheight);
imageresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
}

$name = $name.$filetype;
imagejpeg($newim,$name);
imagedestroy($newim);
}
else
{
$name = $name.$filetype;
imagejpeg($im,$name);
}
}
参数说明:
$im 图片对象,应用函数之前,需要用imagecreatefromjpeg()读取图片对象,如果PHP环境支持PNG,GIF,也可使用imagecreatefromgif(),imagecreatefrompng();
$maxwidth 定义生成图片的最大宽度(单位:像素)
$maxheight 生成图片的最大高度(单位:像素)
$name 生成的图片名
$filetype 最终生成的图片类型(.jpg/.png/.gif)
代码注释:
第3~4行:读取需要缩放的图片实际宽高
第8~26行:通过计算实际图片宽高与需要生成图片的宽高的压缩比例最终得出进行图片缩放是根据宽度还是高度进行缩放,当前程序是根据宽度进行图片缩放。如果想根据高度进行图片缩放,可以将第22行的语句改成$widthratio>$heightratio
第28~31行:如果实际图片的长度或者宽度小于规定生成图片的长度或者宽度,则要么根据长度进行图片缩放,要么根据宽度进行图片缩放。
第33~34行:计算最终缩放生成的图片长宽。
第36~45行:根据计算出的最终生成图片的长宽改变图片大小,有两种改变图片大小的方法:ImageCopyResized()函数在所有GD版本中有效,但其缩放图像的算法比较粗糙。ImageCopyResamples(),其像素插值算法得到的图像边缘比较平滑,但该函数的速度比ImageCopyResized()慢。
第47~49行:最终生成经过处理后的图片,如果需要生成GIF或PNG,需要将imagejpeg()函数改成imagegif()或imagepng()
第51~56行:如果实际图片的长宽小于规定生成的图片长宽,则保持图片原样,同理,如果需要生成GIF或PNG,需要将imagejpeg()函数改成imagegif()或imagepng()。
特别说明:
GD库1.6.2版以前支持GIF格式,但因GIF格式使用LZW算法牵涉专利权,因此在GD1.6.2版之后不支持GIF的格式。如果是WINDOWS的环境,只要进入PHP.INI文件找到extension=php_gd2.dll,将#去除,重启APACHE即可。如果是Linux环境,又想支持GIF,PNG,JPEG,需要去下载libpng,zlib,以及freetype字体并安装。
OK,PHP图片压缩函数完成,最后概述一下整个处理的思路:
通过计算实际图片的长宽与规定生成图片的长宽之间的缩放比例,根据实际的需求(按照宽度还是按照高度进行图片缩放)计算出最终生成图片的大小,然后应用PHP图片处理函数对图片进行处理,最后输出图片。
以上就是关于PHP图片处理中如何对图片进行压缩并保持不失真的函数说明。

Ⅲ php 如何检查图片是否已经加过水印 求解

在php采集的时候,尤其是大量的自动采集的时候,加了水印的图片想程序自动鉴别。
你是这种想法吗?
这种想法可以,但没有这种方法。以前没有,今后也不会有。
水印和图片已经形成一张新图片了,不要说PHP对图片没有识别能力,就算PHP对图片有识别能力,它也没有办法识别图片上哪个属于图片内容,哪个属于水印内容。
但是,我们就没有办法处理水印的问题吗?办法肯定是有的。我提供几种思路:
1、我们自己建立一个无水印网站地址库,这个由我们日常来管理。php通过图片的真实地址,属于无水印网站地址范围,就认为是无水印的。不在范围内的,就作为有水印处理。
2、如果我们固定从某个大站取图片,它的图片有的有水印,有的无水印,而且有水印的都是那么固定的格式,那我们就根据它的方法,在水印上添加我们的水印。但这不是万能的,如果它在图片上全部铺满它的logo或者网址,像贴满膏药一样无法下手,我们只能对此说sorry,换个网站吧。

阅读全文

与php程序与图片分离相关的资料

热点内容
英语编译体 浏览:384
windowsdig命令 浏览:505
android不同字体大小 浏览:267
编译php参数 浏览:525
javanodejsphpnet 浏览:820
bitbake编译文件系统 浏览:101
哔哩哔哩安卓怎么玩exe 浏览:875
不同ide对编译结果有影响么 浏览:589
pdf转word原理 浏览:3
加密电梯口 浏览:194
民国人pdf 浏览:492
51单片机定时器设计实验 浏览:245
刮橙子解压视频 浏览:720
进入pe硬盘显示加密电脑系统进不去 浏览:741
我的电脑怎么放进文件夹 浏览:995
听财app叫什么 浏览:210
程序员个人简单分享 浏览:808
燃烧器控制算法 浏览:799
程序员能力要求 浏览:795
php程序与图片分离 浏览:204