在 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 中为安全而准备的语句?的主要内容,如果未能解决你的问题,请参考以下文章
javascript中是不是有类似于php中的compact的功能?
单链查询 mongodb / mongoose 获取所有评论