NoSQL Enjeksiyonu (ARCH7140)
Anahtar php.security.nosql-injection · Önem error · Kategori security · CWE CWE-943
Kullanıcı girdisini doğrudan bir MongoDB sorgusuna koymak, saldırganın {"$ne": null} gibi operatör nesneleri enjekte ederek kimlik doğrulamayı atlamasına olanak tanır.
Hatalı
Bölüm başlığı “Hatalı”<?php// password=array('$ne' => null) → her parolayla eşleşir$user = $collection->findOne([ 'user' => $_POST['user'], 'password' => $_POST['password'],]);<?php$user = $collection->findOne(['user' => (string) $_POST['user']]);if ($user && password_verify((string) $_POST['password'], $user['password'])) { // giriş başarılı}Düzeltme
Bölüm başlığı “Düzeltme”Sorgu değerlerini beklenen ilkel tiplere zorlayın (string/int); operatör nesnelerinin kullanıcı girdisinden geçmesine izin vermeyin.