嵌入图像的脚本

wat*_*ood 9 php mysql security

我运行一个小型浏览器MMO,我遇到一个问题,其中有几个用户将脚本嵌入到他们的个人资料图片中,并使用它们对所述用户和我的游戏进行攻击.有没有办法防止这种情况,或者我是否需要开始阻止人们使用他们自己的自定义图像?

如果它有帮助,它在PHP/MySQL中完成.

Unk*_*ech 6

最有可能的是,它们正在为您提供一个脚本链接,该脚本正在构建图像并在运行中返回它,除了不允许用户使用外部图像之外没有任何内容,您可以做到这一点,一个选项是防止它是将图像下载并存储在服务器上,而不是链接到外部图像.

- 我决定提供一个样本
这个图像是动态创建的,我给的网址是:http://unkwndesign.com/profilePic.png:
alt text http://unkwndesign.com/profilePic.png
now ,profilePic.png是一个文件夹,当被要求提供index.php时,使用gd获取SO徽标,并在其上施加你的IP地址,这里非常清楚我没有记录这个或任何其他数据的来源对于index.php是:

<?php
$image = imagecreatefrompng("http://stackoverflow.com/Content/Img/stackoverflow-logo-250.png");
$font_size = 12;
$color = imagecolorallocate($image, 0,0,0);
ImageTTFText ($image, $font_size, 0, 55, 35, $color, "arial.ttf",$_SERVER['REMOTE_ADDR']);
header("Content-type: image/png");
imagepng($image);
imagedestroy($image);
?>
Run Code Online (Sandbox Code Playgroud)

由于我正在返回一个具有适当扩展名的图像,以及正确的mime-type,因此无法检测到我在做什么.如果服务器已经下载了我的图像并将其存储在本地,则IP地址将是服务器的IP地址,这将破坏这样做的乐趣,并且可能证明足以使用一个推理行为的观察因素.


小智 0

验证图像完整性的一些最常见做法包括检查MIME类型,或以二进制方式读取图像的前几个字节。尽管这些并不是最好的,但值得尝试一下来抵御其中的一些。