在PHP中我正在创建一个svg文件,注入一些从表单发布的元素,使用ImageMagick将svg转换为jpg,然后最终销毁svg只留下jpg版本。一切都很完美。我担心的是安全性以及我可以/应该采取哪些措施来降低风险。
这是我的代码的内容......
//WRITE THE FILE CONTENTS INTO THE FILE
//If file already exists, it will replace it.
file_put_contents($file, $current);
//START CONVERSION PROCESS
$svg = file_get_contents($file);
$image = new Imagick();
$image->readImageBlob($svg);
$image->setCompression(Imagick::COMPRESSION_JPEG);
$image->setCompressionQuality(60);
$image->setImageFormat("jpg");
$image->writeImage($newFileName);
$image->clear();
$image->destroy();
//DESTROY SVG FILE
unlink($file);
我的恐惧是可以利用的东西插入我的svg。如果是这种情况,它会在图像转换中存活下来吗?我可能会采取哪些策略来使其更安全/尽可能安全。
答案 0 :(得分:1)
SVG将以XML继承所有安全风险;像billion laughs& external entities为一对夫妇命名。虽然大多数SVG委托库已经解决了关键问题,但您仍然有责任防范XSS并清理用户输入。
如果是这种情况,它会在图像转换中存活吗?
通常不会,因为向光栅重新绘制矢量的过程会抛出原始数据。但是,针对停止读取SVG数据的攻击将持续存在。
我可能会采取哪些策略来使其更安全/尽可能安全。