qqi*_*ihq 5 regex exploit backtracking mongodb
我们有一个REST API,用于查询MongoDB中的记录。很简单,遵循以下步骤:
GET /api/items?q=foo
Run Code Online (Sandbox Code Playgroud)
在开发过程中,允许使用正则表达式作为查询很方便q。我们只是将查询参数传递给MongoDB $regex运算符,而不进行任何转义:
db.getCollection('items').find({ name: { $regex: req.query.q, $options: 'i' } });
Run Code Online (Sandbox Code Playgroud)
因此,我们有一种非常灵活方便的查询数据的方式。现在,事情变得“严重”,即接近生产,我在问自己有关安全性的问题。有人可以通过昂贵的回溯发送“ DoS”查询吗?
我可能没有足够的破坏力来考虑这样的查询,因此我已经在Internet上搜索并发现了这一非常有趣的读物,其中提到了几种攻击:爆炸性量词陷阱。
舍弃这一事实,即上一页中提到的查询的行为远没有达到预期的“灾难性”(无论是在MongoDB查询中,还是在在线工具(例如regex101.com中)),我仍然想知道:
我很个人的直觉说:不要打扰。但是,再次重申,如果您仍然要这样做,或者甚至必须这样做,那么这里有一些有关如何处理此要求的建议: