PHP8 MongoDB請求注入攻擊

2024-04-08 10:15 更新

如果您通過(或 ) 參數(shù),請確保它們首先被強制轉(zhuǎn)換為字符串。 用戶可以在 GET 和 POST 請求中插入關(guān)聯(lián)數(shù)組,這可以 然后成為不需要的 $ 查詢。$_GET$_POST

一個相當(dāng)無害的例子:假設(shè)您正在查找用戶的信息 請求 http://www.example.com?username=bob。 您的應(yīng)用程序?qū)?chuàng)建查詢。$q = new \MongoDB\Driver\Query( [ 'username' => $_GET['username'] ])

有人可以通過獲取 http://www.example.com?username[$ne]=foo(其中 PHP)來顛覆這一點 會神奇地變成一個關(guān)聯(lián)數(shù)組,把你的查詢變成 , 這將返回所有未命名為“foo”的用戶(可能是您的所有用戶)。$q = new \MongoDB\Driver\Query( [ 'username' => [ '$ne' => 'foo' ] ] )

這是一個相當(dāng)容易防御的攻擊:確保 _GET 美元和 _POST 美元 參數(shù)是將參數(shù)發(fā)送到數(shù)據(jù)庫之前所需的類型。 PHP 有 filter_var() 函數(shù)來協(xié)助解決這個問題。

請注意,這種類型的攻擊可以與任何數(shù)據(jù)庫交互一起使用 查找文檔,包括更新、更新插入、刪除和 findAndModify 命令。

有關(guān)MongoDB的類似SQL注入的問題的更多信息,請參閱主要文檔。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號