Атака Π·Π° допомогою Ρ–Π½'Ρ”ΠΊΡ†Ρ–ΠΉ Ρƒ Π·Π°ΠΏΠΈΡ‚Ρ–

Π―ΠΊΡ‰ΠΎ Π²ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ”Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ $_GET(ΠΈΠ»ΠΈ$_POST) своїм Π·Π°ΠΏΠΈΡ‚Π°ΠΌ, пСрСконайтСся, Ρ‰ΠΎ Π²ΠΎΠ½ΠΈ спочатку Π½Π°Π²ΠΎΠ΄ΡΡ‚ΡŒΡΡ Π΄ΠΎ рядків. ΠšΠΎΡ€ΠΈΡΡ‚ΡƒΠ²Π°Ρ‡Ρ– ΠΌΠΎΠΆΡƒΡ‚ΡŒ вставляти асоціативні масиви Π² Π·Π°ΠΏΠΈΡ‚ΠΈ GET Ρ– POST, які ΠΌΠΎΠΆΡƒΡ‚ΡŒ стати Π½Π΅Π±Π°ΠΆΠ°Π½ΠΈΠΌΠΈ $-Π·Π°ΠΏΠΈΡ‚Π°ΠΌΠΈ.

Π”ΠΎΡΠΈΡ‚ΡŒ Π½Π΅ΡˆΠΊΡ–Π΄Π»ΠΈΠ²ΠΈΠΉ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄. ΠŸΡ€ΠΈΠΏΡƒΡΡ‚ΠΈΠΌΠΎ, Π²ΠΈ ΡˆΡƒΠΊΠ°Ρ”Ρ‚Π΅ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΡŽ ΠΏΡ€ΠΎ користувача Π·Π° Π·Π°ΠΏΠΈΡ‚ΠΎΠΌ http://www.example.com?username=bob. Π’Π°ΡˆΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ΡΡ‚Π²ΠΎΡ€ΡŽΡ” Π·Π°ΠΏΠΈΡ‚ $q = new \MongoDB\Driver\Query( [ 'username' => $_GET['username'] ])

Π₯Ρ‚ΠΎΡΡŒ ΠΌΠΎΠΆΠ΅ ΠΏΡ–Π΄Ρ–Ρ€Π²Π°Ρ‚ΠΈ Ρ†Π΅, ΠΎΡ‚Ρ€ΠΈΠΌΠ°Π²ΡˆΠΈ http://www.example.com?username\[$ne\]=foo, який PHP Ρ‡Π°Ρ€Ρ–Π²Π½ΠΈΠΌ Ρ‡ΠΈΠ½ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π° асоціативний масив, ΠΏΠ΅Ρ€Π΅Ρ‚Π²ΠΎΡ€ΠΈΠ²ΡˆΠΈ ваш Π·Π°ΠΏΠΈΡ‚ Π½Π° $q = new \MongoDB\Driver\Query( [ 'username' => [ '$ne' => 'foo' ] ] ), який ΠΏΠΎΠ²Π΅Ρ€Π½Π΅ всіх користувачів, які Π½Π΅ ΠΌΠ°ΡŽΡ‚ΡŒ Ρ–ΠΌΠ΅Π½Ρ– "foo" (ΠΉΠΌΠΎΠ²Ρ–Ρ€Π½ΠΎ, всіх користувачів).

Π’Ρ–Π΄ Ρ†Ρ–Ρ”Ρ— Π°Ρ‚Π°ΠΊΠΈ Π΄ΠΎΡΠΈΡ‚ΡŒ Π»Π΅Π³ΠΊΠΎ Π·Π°Ρ…ΠΈΡΡ‚ΠΈΡ‚ΠΈΡΡŒ: пСрСконайтСся, Ρ‰ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ $_GET Ρ‚Π° $_POST Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°ΡŽΡ‚ΡŒ ΠΎΡ‡Ρ–ΠΊΡƒΠ²Π°Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ, ΠΏΠ΅Ρ€Ρˆ Π½Ρ–ΠΆ надсилати Π² Π±Π°Π·Ρƒ Π΄Π°Π½ΠΈΡ…. PHP ΠΌΠ°Ρ” Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽ filter_var(), Ρ‰ΠΎΠ± Π΄ΠΎΠΏΠΎΠΌΠΎΠ³Ρ‚ΠΈ Π· Ρ†ΠΈΠΌ.

Π—Π²Π΅Ρ€Π½Ρ–Ρ‚ΡŒ ΡƒΠ²Π°Π³Ρƒ, Ρ‰ΠΎ Ρ†Π΅ΠΉ Ρ‚ΠΈΠΏ Π°Ρ‚Π°ΠΊΠΈ ΠΌΠΎΠΆΠ΅ використовуватися Π· Π±ΡƒΠ΄ΡŒ-якою Π²Π·Π°Ρ”ΠΌΠΎΠ΄Ρ–Ρ”ΡŽ Π· базою Π΄Π°Π½ΠΈΡ…, яка Π·Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‡ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ update, upserts, delete Ρ‚Π° findAndModify.

БмотритС» основну Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†Ρ–ΡŽ для отримання Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΎΡ— Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–Ρ— ΠΏΡ€ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Ρ–Π½'Ρ”ΠΊΡ†Ρ–ΠΉ SQL Π² MongoDB.