首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这段JSON代码安全吗?

这段JSON代码安全吗?
EN

Stack Overflow用户
提问于 2017-04-10 03:05:19
回答 2查看 136关注 0票数 2

我有这个代码来检查json是否有效,如果有效,json中的每个对象都会被计算为1美元(我网站上的货币)。以下是代码

代码语言:javascript
复制
<?php
if(isset($_POST['data'])) {
  $testJson = json_decode($_POST['data']);
  if($testJson) {
    $price = 0;
    foreach($testJson as $amount) 
      // I do something with $amount...
      $price++; // Augment the price
    }
  }
}

所以基本上,如果$_POST['data'][{"item":2,"id":1092,"x":198,"y":-1}],那么价格将是1美元。如果它是[{"item":2,"id":1092,"x":198,"y":-1},{"item":2,"id":1098,"x":198,"y":-1}],价格将是2,等等…

我的问题是,有人可以操纵JSON,这样即使JSON字符串中有多个对象,他们也可以0美元购买一件商品吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-04-10 03:12:25

如果您阅读OWASP top 10,就会发现此代码容易受到CSRF的攻击。我还将密切关注SQL注入,因为这在PHP中很常见,因为许多应用程序都不使用ORM。

票数 1
EN

Stack Overflow用户

发布于 2017-04-10 03:21:52

JSON代码本身是安全的(它只是一个字符串)。但是您需要验证/清理从$_POST变量中检索到的任何。

如果您希望将数据保存在mysql数据库中,则还应使用准备好的语句(http://php.net/manual/en/pdo.prepared-statements.php)对其进行清理,以防止sql注入。注意: mysql_real_escape_string不提供任何安全性,它只转义字符串中的字符。

如果您希望在任何时候输出从网站中的$_POST检索到的数据,您也应该避开它(以确保您不会被跨站点脚本攻击捕获)。

我还建议在应用任何逻辑之前根据JSONschema验证JSON。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43310725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档