0

我在网上商店使用在线照片编辑器。用户可以使用 svg-edit 编辑照片并保存更改。用户结果存储为 SVG 源代码 (...)。我必须通过 PHP 表单发送该 SVG 源代码,将其保存在数据库中并显示在管理面板中。

我害怕对我的网上商店进行任何注入或攻击。有没有可能使它安全?

我无法为 SVG 源代码生成私有哈希,因为它是客户端,我可以通过 AJAX 发出任何请求。

@编辑

示例:用户保存...代码并且该代码正在通过 POST 发送。在 PHP 脚本中,我可以访问 $svg = $_POST['svg_source']; 我担心在那个 POST 值中注入。攻击者可以注入任何 HTML、JS 和其他源代码。

@编辑:

然后在数据库中我可以存储 $_POST 值......并在 PA 中查看它。但是攻击者可以编写一些 ... 代码,它将在我查看 SVG 图像的 PA 中执行(基于 SVG 代码)

@编辑:

我需要一些解决方案来检查 SVG 代码是否有效并且不包含任何 JS、HTML 代码。或者 - 我需要一些解决方案来安全地查看网站上的 SVG 代码。

4

1 回答 1

0

在将用户输入存储到数据库之前,请考虑使用mysql_escape_string()之类的东西包装用户输入。就 SQL 注入攻击而言,这将为您提供一些缓解。

至于 HTML/javascript 注入,您需要做的是根据 W3 标准验证 SVG 文件。我快速搜索了一下,发现了这个:

使用 PHP 清理 SVG

这导致了这些: http ://us3.php.net/manual/en/domdocument.schemavalidate.php 和 http://us3.php.net/manual/en/domdocument.validate.php

我希望这是有帮助的。

编辑 :

正如下面评论中所建议的,您可以通过仅将您认为安全的元素列入白名单来解析 SVG 文件。看起来已经有一个很好的帖子涵盖了这个:

通过将元素列入白名单来清理 SVG 文档

于 2013-08-23T16:17:03.550 回答