一个简单的MongoDB注入

在关系型数据库时代,SQL注入攻防几乎成了每一个Web开发者的必修课,很多NoSQL的支持者称NoSQL的同时也就No SQL注入了。其实不然,下面就是一个利用GET参数判断不严格进行的MongoDB注入,希望能够引起大家大家在安全方面的重视。


使用SQL数据库存储用户名密码的系统,我们检测用户名与密码的过程可能是这样的:

mysql_query("SELECT * FROM user WHERE username=" . $_GET['username'] . ", AND passwd=" . $_GET['passwd'])

我们使用MongoDB进行最简单的用户名与密码检测可能是这样的:

$collection->find(array( "username" => $_GET['username'], "passwd" => $_GET['passwd']));

在最普通的SQL注入中,我们可以构造下面这样的请求:

login.php?username=admin&passwd=abc OR 1 –

这个请求会形成这样的SQL语句:

SELECT * FROM user WHERE username=admin AND passwd=abc OR 1;

成功注入!

采用同理的方法,针对上面的MongoDB查询方式,你可以构造下面的请求:

login.php?username=admin&passwd[$ne]=1

这个请求会形成这样的MongoDB查询:

$collection->find(array( "username" => "admin", "passwd" => array("$ne" => 1)));

成功注入!

更多NoSQL安全相关的知识可以查看NoSQLFan的另一篇文章:《NoSQL安全攻防战


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简单实现MongoDB多数据源,可以使用Spring Boot的MongoDB多数据源配置来实现。首先,在项目的配置文件中添加多个MongoDB数据源的配置,如下所示: ``` spring.data.mongodb.uri=第一个MongoDB数据源连接地址 spring.data.mongodb.other.uri=第二个MongoDB数据源连接地址 ``` 接下来,在代码中使用不同的MongoTemplate来操作不同的MongoDB库。可以通过在代码中注入不同的MongoTemplate对象来实现,如下所示: ```java @Autowired @Qualifier("mongoTemplate") private MongoTemplate mongoTemplate; @Autowired @Qualifier("otherMongoTemplate") private MongoTemplate otherMongoTemplate; ``` 以上代码中,`mongoTemplate`和`otherMongoTemplate`分别对应配置文件中的`mongoTemplate`和`otherMongoTemplate`,可以分别使用它们来操作不同的MongoDB库。 通过以上配置和代码实现,就可以简单实现MongoDB多数据源。使用不同的MongoTemplate来操作不同的MongoDB库,实现数据源的分离和管理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SpringBoot mongodb 多数据源配置](https://blog.csdn.net/lgk601abc/article/details/129442741)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值