我在网上商店使用在线照片编辑器。用户可以使用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代码。
答案 0 :(得分:0)
在将用户输入存储到数据库之前,请考虑使用mysql_escape_string()之类的用户输入。就SQL注入攻击而言,这将为您提供一些缓解。
就HTML / javascript注入而言,您需要做的是根据W3标准验证SVG文件。我做了一个快速搜索,发现了这个:
导致这些: http://us3.php.net/manual/en/domdocument.schemavalidate.php 和 http://us3.php.net/manual/en/domdocument.validate.php
我希望这有用。
编辑:
正如下面的评论所示,您可以通过仅将您认为安全的元素列入白名单来解析SVG文件。看起来已经有一个很好的帖子涵盖了这个: