通过PHP表单的SVG源代码

时间:2013-08-23 14:40:18

标签: php security svg

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

我害怕对我的网上商店进行任何注射或攻击。是否有可能使其安全?

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

@EDIT

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

@EDIT:

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

@EDIT:

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

1 个答案:

答案 0 :(得分:0)

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

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

Sanitizing SVG using PHP

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

我希望这有用。

编辑:

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

Sanitizing an SVG document by whitelisting elements