2013-08-23 40 views
0

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

我怕在我的网上商店发生任何打针或攻击。有没有可能使其安全?

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

@EDIT

实施例:用户保存...代码和代码正在通过POST发送。在PHP脚本中,我可以访问$ svg = $ _POST ['svg_source'];我很担心这个POST值会导致注入。攻击者可能会注入任何HTML,JS,其他源代码。

@EDIT:

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

@EDIT:

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

+0

什么样的注射?的sql? CSS/HTML吗? SVG?如果你使用适当的防御性编程技术,你根本不应该担心注入攻击。 –

+0

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

+0

和那有什么问题?任何用户通过表单提交的数据都会显示在_GET或_POST中... –

回答

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

+0

由于SVG可以有[嵌入式JavaScript](http://www.w3.org/TR/SVG/script.html#ScriptElement)并且仍然有效,并且允许在您的站点上执行任意Javascript实际上是定义XSS ...根据W3C标准进行验证不会对XSS进行防御。 – Quentin

+0

@Quentin - 是的 - 好点。我猜想需要解析SVG并消除任何