【发布时间】:2011-03-08 01:22:23
【问题描述】:
我知道,我知道,标题很糟糕,但我会试着解释一下我的意思。所以,我要求我的成员展示他们的照片。他们将其上传到某个地方,然后将他们照片的 URL 粘贴到输入中,然后我将其保存到我的数据库(MYSQL)中。然后,在他们的个人资料中可以看到这张照片。我从数据库中获取 URL 并执行类似操作:<img src="<?=$photo;?>" height="123px" width="123px">"> 其中$photo 是从 MYSQL 获取的 URL。它完全安全吗?有人可以上传例如 .php 文件并损害我的网站吗?我需要检查 URL 的结尾是 .gif、.png、.jpg 吗?
谢谢。
编辑: 是的,我当然会保护我的网站免受 SQL 注入和 XSS 攻击。但是有什么方法可以以其他方式损害我的网站吗?
【问题讨论】:
-
在插入数据库之前,使用 imagemagik 验证照片是真实图像,而不是其他图像,应该没问题。
-
“它完全安全吗?”这是完全不安全的 :) 如果不是其他的,这里可能会发生各种 xss 攻击。 @Byron 这是个好方法,假设 imagemagick 是安全的,但如果它不是银行网站,那么这不是真正的威胁。
-
<img src="<?=htmlspecialchars($photo);?>" height="123px" width="123px">">。但是,这并不能防止 XSRF(例如,用户输入/logout.php作为图像 URI 可能是一件坏事) -
@Byron:即使图像在脚本检查时有效,但稍后在图像主机上用恶意内容替换照片也是微不足道的。
-
@Marc,正确。我以为他正在将图像源下载到数据库中并提供字节。