在 mongodb 中是不是类似于 php 中为安全而准备的语句?

Posted

技术标签:

【中文标题】在 mongodb 中是不是类似于 php 中为安全而准备的语句?【英文标题】:Is in mongodb something like prepared statements in php for security?在 mongodb 中是否类似于 php 中为安全而准备的语句? 【发布时间】:2021-12-15 12:09:32 【问题描述】:

我只是在学习 mongodb 并且有一个重要的问题。在 mongodb 中是否有类似于 php 中的安全性?在 php 中我可以使用类似的东西:

$stmt = $this->conn->prepare("UPDATE news SET shown = shown+1 WHERE newsID = :newsID");
$stmt->bindValue(":newsID", $id, PDO::PARAM_INT);
$stmt->execute();

但是在 mongodb 中呢?看到将变量直接插入到 mongodb insert 语句中,这很奇怪:

db.products.insertOne(  _id: 10, "item": itemName, "qty": itemQuantity  );

感谢您的解释!

【问题讨论】:

您不需要任何准备好的语句,因为 MongoDB 的查询语言是 JSON,而不仅仅是字符串。 @AKX 谢谢! 【参考方案1】:

除非你会构建类似的东西

db.products.insertOne( JSON.parse(' _id: 10, "item": itemName, "qty": itemQuantity ') )

SQL 注入会相当困难。我猜没有人自愿做这样的代码。

当你运行像db.find("someProperty": userInput)这样的语句时 并且黑客试图传递"$exists": true,然后它会导致db.find("someProperty": "\"$exists\": true"),它不应该返回任何结果。

但如前所述,使用 JSON.parse() 或类似名称可能是一个安全漏洞。

【讨论】:

以上是关于在 mongodb 中是不是类似于 php 中为安全而准备的语句?的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中为 GD 生成的图像拉取远程 URL

MongoDB 功能类似于 SQL 中受影响的行?

javascript中是不是有类似于php中的compact的功能?

单链查询 mongodb / mongoose 获取所有评论

如何在mongoDB默认键列表中添加类似于键'_id'的键?

php mongodb扩展 其他扩展也类似