服务器端JSON字符串验证

时间:2017-01-20 21:19:00

标签: javascript php json security

有没有一种安全的方法可以在php中验证传入的不受信任的JSON字符串?

客户端显示动态表单。用户可以在该表单中输入数据。数据需要保存在服务器上。服务器不能处理数据,它只会在下次加载页面时将其传递给客户端,以便恢复表单值。因此我想要分别检查每个值并将其保存到自己的数据库字段中。

我希望将其保存为JSON字符串,并在每次页面加载时将其作为对象变量插入DOM。是否有一种安全的方法来清理传入的JSON字符串?

1 个答案:

答案 0 :(得分:0)

如果您将代码注入script标记,并且您希望保证它是纯Javascript代码,没有任何潜在危险的XSS漏洞,那么简单的方法就是首先使用PHP进行解码它然后重新编码。

$safeJSON = json_encode(json_decode($unsafeJSON));

任何无效的JSON都会在null被调用时返回json_decode。在这种情况下,字符串"null"将返回到您的浏览器,在这种情况下不太可能造成任何伤害!

但是,值得注意的是,你所做的只是潜在的不安全因为这实际上并不是JSON。当它在script标记内使用时,它只是一个Javascript对象文字。如果您将其用作JSON,例如通过执行AJAX调用,它不会是安全漏洞,因为浏览器无法识别JSON.parse调用中的无效JSON。有关Javascript对象与JSON之间差异的更多信息,请参阅this excellent blog post

相关问题