SQL-Ρ–Π½'Ρ”ΠΊΡ†Ρ–Ρ—

SQL-Ρ–Π½'єкція - Ρ†Π΅ Ρ‚Π΅Ρ…Π½Ρ–ΠΊΠ°, Π·Π° якої зловмисник використовує Π½Π΅Π΄ΠΎΠ»Ρ–ΠΊΠΈ Π² ΠΊΠΎΠ΄Ρ– ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, Ρ‰ΠΎ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°Ρ” Π·Π° ΠΏΠΎΠ±ΡƒΠ΄ΠΎΠ²Ρƒ Π΄ΠΈΠ½Π°ΠΌΡ–Ρ‡Π½ΠΈΡ… SQL-Π·Π°ΠΏΠΈΡ‚Ρ–Π². Зловмисник ΠΌΠΎΠΆΠ΅ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ доступ Π΄ΠΎ ΠΏΡ€ΠΈΠ²Ρ–Π»Π΅ΠΉΠΎΠ²Π°Π½ΠΈΡ… Ρ€ΠΎΠ·Π΄Ρ–Π»Ρ–Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ всю Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΡŽ Π· Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ…, ΠΏΡ–Π΄ΠΌΡ–Π½ΠΈΡ‚ΠΈ наявні Π΄Π°Π½Ρ– Π°Π±ΠΎ Π½Π°Π²Ρ–Ρ‚ΡŒ Π²ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ Π½Π΅Π±Π΅Π·ΠΏΠ΅Ρ‡Π½Ρ– ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ систСмного рівня Π½Π° Π²ΡƒΠ·Π»Ρ– Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ…. Π£Ρ€Π°Π·Π»ΠΈΠ²Ρ–ΡΡ‚ΡŒ Π²ΠΈΠ½ΠΈΠΊΠ°Ρ”, ΠΊΠΎΠ»ΠΈ Ρ€ΠΎΠ·Ρ€ΠΎΠ±Π½ΠΈΠΊΠΈ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½ΡƒΡŽΡ‚ΡŒ Π°Π±ΠΎ Ρ–Π½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΡƒΡŽΡ‚ΡŒ Π΄ΠΎΠ²Ρ–Π»ΡŒΠ½Π΅ ввСдСння SQL-Π·Π°ΠΏΠΈΡ‚Π°Ρ….

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ #1 ΠŸΠΎΡΡ‚ΠΎΡ€Ρ–Π½ΠΊΠΎΠ²ΠΈΠΉ висновок Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ Ρ‚Π° створСння супСркористувача Π² PostgreSQL

Π£ наступному ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρ– ввСдСння користувача Ρ–Π½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΡƒΡ”Ρ‚ΡŒΡΡ Π² SQL-Π·Π°ΠΏΠΈΡ‚, Ρ‰ΠΎ дозволяє зловмиснику ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис супСркористувача Π² Π±Π°Π·Ρ– Π΄Π°Π½ΠΈΡ….

Loading...

Π—Π°Π·Π²ΠΈΡ‡Π°ΠΉ користувачі Π½Π°Ρ‚ΠΈΡΠΊΠ°ΡŽΡ‚ΡŒ Π·Π° посиланням 'Π²ΠΏΠ΅Ρ€Π΅Π΄' Ρ– 'Π½Π°Π·Π°Π΄', внаслідок Ρ‡ΠΎΠ³ΠΎ значСння Π·ΠΌΡ–Π½Π½ΠΎΡ— $offset Π·Π°Π½ΠΎΡΠΈΡ‚ΡŒΡΡ Π΄ΠΎ URL. Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΎΡ‡Ρ–ΠΊΡƒΡ”, Ρ‰ΠΎ $offset – дСсятковС число. Однак, Π·Π»ΠΎΠΌΡ‰ΠΈΠΊ ΠΌΠΎΠΆΠ΅ спробувати Π·Π»Π°ΠΌΠ°Ρ‚ΠΈ систСму, ΠΏΡ€ΠΈΡ”Π΄Π½Π°Π²ΡˆΠΈ Π΄ΠΎ URL наступнС значСння:

0; insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd) select 'crack', usesysid, 't','t','crack' from pg_shadow where usename='postgres'; --

Π―ΠΊΡ‰ΠΎ Ρ†Π΅ ΡΡ‚Π°Π½Π΅Ρ‚ΡŒΡΡ, скрипт Π½Π°Π΄Π°ΡΡ‚ΡŒ зловмиснику доступ супСркористувача. Π—Π²Π΅Ρ€Π½Ρ–Ρ‚ΡŒ ΡƒΠ²Π°Π³Ρƒ, Ρ‰ΠΎ значСння 0; використано для Ρ‚ΠΎΠ³ΠΎ, Ρ‰ΠΎΠ± Π·Π°Π΄Π°Ρ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅ усунСння ΠΏΠ΅Ρ€ΡˆΠΎΠ³ΠΎ Π·Π°ΠΏΠΈΡ‚Ρƒ Ρ– ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΉΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΠΈ.

ЗауваТСння :

Π¦Π΅ ΠΏΠΎΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈΠΉΠΎΠΌ, Ρ‰ΠΎΠ± змусити синтаксичний Π°Π½Π°Π»Ρ–Π·Π°Ρ‚ΠΎΡ€ SQL Ρ–Π³Π½ΠΎΡ€ΡƒΠ²Π°Ρ‚ΠΈ Ρ€Π΅ΡˆΡ‚Ρƒ Π·Π°ΠΏΠΈΡ‚Ρƒ, написаного Ρ€ΠΎΠ·Ρ€ΠΎΠ±Π½ΠΈΠΊΠΎΠΌ Π·Π° допомогою --який Ρ” Π·Π½Π°ΠΊΠΎΠΌ комСнтаря Π² SQL.

Π©Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΈΠΉ спосіб ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Ρ– ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΡ… записів Ρƒ Π‘Π” – Π°Ρ‚Π°ΠΊΠ° сторінок, Ρ‰ΠΎ Π½Π°Π΄Π°ΡŽΡ‚ΡŒ ΠΏΠΎΡˆΡƒΠΊ ΠΏΠΎ Π±Π°Π·Ρ–. Зловмиснику ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ лишС ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΈΡ‚ΠΈ, Ρ‡ΠΈ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ Π² Π·Π°ΠΏΠΈΡ‚Ρ– Π·ΠΌΡ–Π½Π½Π°, Ρ‰ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ”Ρ‚ΡŒΡΡ Π½Π° сСрвСр Ρ– Π½Π΅ΠΎΠ±Ρ€ΠΎΠ±Π»Π΅Π½Π° Π½Π°Π»Π΅ΠΆΠ½ΠΈΠΌ Ρ‡ΠΈΠ½ΠΎΠΌ. Π¦Π΅ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½ Ρ–Π· Ρ„Ρ–Π»ΡŒΡ‚Ρ€Ρ–Π², Ρ‰ΠΎ Π²ΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡŽΡ‚ΡŒΡΡ Π½Π° ΠΏΠΎΠΏΠ΅Ρ€Π΅Π΄Π½Ρ–ΠΉ сторінці, Ρ‚Π°ΠΊΠΈΡ… як WHERE, ORDER BY, LIMITΠΈOFFSET, Ρ‰ΠΎ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠ±ΡƒΠ΄ΠΎΠ²Ρ– Π·Π°ΠΏΠΈΡ‚Ρ–Π² SELECT. Π£ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ, якщо Π±Π°Π·Π° Π΄Π°Π½ΠΈΡ…, Ρ‰ΠΎ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ Π²Π°ΠΌΠΈ, ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡ” ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†Ρ–ΡŽ UNION, зловмисник ΠΌΠΎΠΆΠ΅ ΠΏΡ€ΠΈΡ”Π΄Π½Π°Ρ‚ΠΈ Π΄ΠΎ ΠΎΡ€ΠΈΠ³Ρ–Π½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΠΈΡ‚Ρƒ Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΈΠΉ, для вилучСння ΠΏΠ°Ρ€ΠΎΠ»Ρ–Π² користувача. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡ”ΠΌΠΎ використовувати Ρ‚Ρ–Π»ΡŒΠΊΠΈ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Ρ– ΠΏΠ°Ρ€ΠΎΠ»Ρ–.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ #2 Лістинг статСй... Ρ‚Π° дСяких ΠΏΠ°Ρ€ΠΎΠ»Ρ–Π² (для Π±ΡƒΠ΄ΡŒ-якої Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ…)

Loading...

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π½Π° частина Π·Π°ΠΏΠΈΡ‚Ρƒ ΠΌΠΎΠΆΠ΅ ΠΊΠΎΠΌΠ±Ρ–Π½ΡƒΠ²Π°Ρ‚ΠΈΡΡŒ Π· Ρ–Π½ΡˆΠΈΠΌ SELECT-Π·Π°ΠΏΠΈΡ‚, який Π²ΠΈΠ²Π΅Π΄Π΅ всі ΠΏΠ°Ρ€ΠΎΠ»Ρ–:

'

union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0' from usertable;

Π’ΠΈΡ€Π°Π·ΠΈ UPDATEΠΈINSERT Ρ‚Π°ΠΊΠΎΠΆ ΡΡ…ΠΈΠ»ΡŒΠ½Ρ– Π΄ΠΎ Ρ‚Π°ΠΊΠΈΡ… Π°Ρ‚Π°ΠΊ.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ #3 Π’Ρ–Π΄ скидання пароля Π΄ΠΎ отримання Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΈΡ… ΠΏΡ€ΠΈΠ²Ρ–Π»Π΅Ρ—Π² (Π±ΡƒΠ΄ΡŒ-який сСрвСр Π±Π°Π· Π΄Π°Π½ΠΈΡ…)

Loading...

АлС зловмисник ΠΌΠΎΠΆΠ΅ ввСсти значСння ' or uid like'%admin%' для Π·ΠΌΡ–Π½Π½ΠΎΡ— $uid для Π·ΠΌΡ–Π½ΠΈ пароля адміністратора Π°Π±ΠΎ просто присвоїти Π·ΠΌΡ–Π½Π½ΠΎΡ— $pwd значСння hehehe', trusted=100, admin='yes для отримання Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΈΡ… ΠΏΡ€ΠΈΠ²Ρ–Π»Π΅Ρ—Π². ΠŸΡ€ΠΈ Π²ΠΈΠΊΠΎΠ½Π°Π½Π½Ρ– Π·Π°ΠΏΠΈΡ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠ»Ρ–Ρ‚Π°ΡŽΡ‚ΡŒΡΡ:

Loading...

Π₯ΠΎΡ‡Π° Π·Π°Π»ΠΈΡˆΠ°Ρ”Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΈΠΌ, Ρ‰ΠΎ для провСдСння ΡƒΡΠΏΡ–ΡˆΠ½ΠΎΡ— Π°Ρ‚Π°ΠΊΠΈ зловмисник ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ ΠΌΠ°Ρ‚ΠΈ Ρ…ΠΎΡ‡Π° Π± дСякі знання ΠΏΡ€ΠΎ Π°Ρ€Ρ…Ρ–Ρ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ…, ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ Ρ†ΡŽ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΡŽ Π΄ΡƒΠΆΠ΅ просто. Наприклад, ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Ρ‡Π°ΡΡ‚ΠΈΠ½ΠΎΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΎΠ³ΠΎ забСзпСчСння Π· Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΠΌ Π²ΠΈΡ…Ρ–Π΄Π½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Ρ– ΠΏΠ΅Ρ€Π΅Π±ΡƒΠ²Π°Ρ‚ΠΈ Ρƒ Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΎΠΌΡƒ доступі. Ця інформація Ρ‚Π°ΠΊΠΎΠΆ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Ρ€ΠΎΠ·ΠΊΡ€ΠΈΡ‚Π° Π·Π°ΠΊΡ€ΠΈΡ‚ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ - Π½Π°Π²Ρ–Ρ‚ΡŒ якщо Π²Ρ–Π½ Π·Π°ΠΊΠΎΠ΄ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΎΠ±Ρ„ΡƒΡΡ†ΡŒΠΎΠ²Π°Π½ΠΈΠΉ Π°Π±ΠΎ ΡΠΊΠΎΠΌΠΏΡ–Π»ΡŒΠΎΠ²Π°Π½ΠΈΠΉ, Ρ– Π½Π°Π²Ρ–Ρ‚ΡŒ вашим власним ΠΊΠΎΠ΄ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· відобраТСння ΠΏΠΎΠ²Ρ–Π΄ΠΎΠΌΠ»Π΅Π½ΡŒ ΠΏΡ€ΠΎ ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ. Π†Π½ΡˆΡ– ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡŒ використання Ρ‚ΠΈΠΏΠΎΠ²ΠΈΡ… Ρ–ΠΌΠ΅Π½ Ρ‚Π°Π±Π»ΠΈΡ†ΡŒ Ρ‚Π° стовпців. Наприклад, Ρ„ΠΎΡ€ΠΌΠ° Π²Ρ…ΠΎΠ΄Ρƒ Π² систСму, яка використовує Ρ‚Π°Π±Π»ΠΈΡ†ΡŽ 'users' Π· Ρ–ΠΌΠ΅Π½Π°ΠΌΠΈ стовпців 'id', 'username' Ρ‚Π° 'password'.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ #4 Атака Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–ΠΉΠ½Ρƒ систСму сСрвСра Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ… (MSSQL Server)

Π–Π°Ρ…Π»ΠΈΠ²ΠΈΠΉ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ Ρ‚ΠΎΠ³ΠΎ, як ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ рівня ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–ΠΉΠ½ΠΎΡ— систСми ΠΌΠΎΠΆΡƒΡ‚ΡŒ Π±ΡƒΡ‚ΠΈ доступні Π½Π° дСяких Π²ΡƒΠ·Π»Π°Ρ… Π±Π°Π· Π΄Π°Π½ΠΈΡ….

Loading...

Π―ΠΊΡ‰ΠΎ зловмисник ΠΏΠ΅Ρ€Π΅Π΄Π°ΡΡ‚ΡŒ значСння a%' exec master..xp_cmdshell 'net user test testpass /ADD' -- Π² $prod, $query Π±ΡƒΠ΄Π΅:

Loading...

MSSQL Server Π²ΠΈΠΊΠΎΠ½ΡƒΡ” SQL Π·Π°ΠΏΠΈΡ‚ΠΈ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Ρ–, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‡ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ додавання Π½ΠΎΠ²ΠΎΠ³ΠΎ користувача Π΄ΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΡ— Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ… ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΡ… записів. Π―ΠΊΠ±ΠΈ ця ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π±ΡƒΠ»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π²Ρ–Π΄ Ρ–ΠΌΠ΅Π½Ρ– sa Ρ– слуТба MSSQLSERVER Π±ΡƒΠ»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π· достатніми привілСями, Ρƒ зловмисника Π·'явився ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис, Π·Π° допомогою якого Π²Ρ–Π½ ΠΌΡ–Π³ Π±ΠΈ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ доступ Π΄ΠΎ Ρ†Ρ–Ρ”Ρ— машини.

ЗауваТСння :

ДСякі ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ΠΈ, Π½Π°Π²Π΅Π΄Π΅Π½Ρ– Π²ΠΈΡ‰Π΅, ΠΏΡ€ΠΈΠ²'язані Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сСрвСру Π±Π°Π· Π΄Π°Π½ΠΈΡ…, Π°Π»Π΅ Ρ†Π΅ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Ρ”, Ρ‰ΠΎ ΠΏΠΎΠ΄Ρ–Π±Π½Π° Π°Ρ‚Π°ΠΊΠ° Π½Π΅ΠΌΠΎΠΆΠ»ΠΈΠ²Π° Π½Π° Ρ–Π½ΡˆΡ– ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ. Π’Π°Ρˆ сСрвСр Π±Π°Π· Π΄Π°Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Π°Π½Π°Π»ΠΎΠ³Ρ–Ρ‡Π½ΠΎ Π²Ρ€Π°Π·Π»ΠΈΠ²ΠΈΠΌ Ρ‚Π° Ρ–Π½ΡˆΠΈΠΌ способом.

Π—Π°Π±Π°Π²Π½ΠΈΠΉ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΏΠΎΠ²'язаних Ρ–Π· SQL-Ρ–Π½'єкціями

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ любСзно прСдоставлСно» xkcd

Бпособи захисту

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΈΠΉ спосіб ΡƒΠ½ΠΈΠΊΠ½ΡƒΡ‚ΠΈ SQL-Ρ–Π½'Ρ”ΠΊΡ†Ρ–ΠΉ – Π·Π²'язування всіх Π΄Π°Π½ΠΈΡ… Π·Π° допомогою ΠΏΡ–Π΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΡ… Π·Π°ΠΏΠΈΡ‚Ρ–Π². Використання ΠΏΡ–Π΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΡ… Π·Π°ΠΏΠΈΡ‚Ρ–Π² Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ для ΠΏΠΎΠ²Π½ΠΎΠ³ΠΎ запобігання SQL-Ρ–Π½'Ρ”ΠΊΡ†Ρ–ΠΉ, Π°Π»Π΅ Ρ†Π΅ Π½Π°ΠΉΠΏΡ€ΠΎΡΡ‚Ρ–ΡˆΠΈΠΉ Ρ– Π½Π°ΠΉΠ±Π΅Π·ΠΏΠ΅Ρ‡Π½Ρ–ΡˆΠΈΠΉ спосіб Π·Π°Π±Π΅Π·ΠΏΠ΅Ρ‡ΠΈΡ‚ΠΈ ввСдСння Π΄Π°Π½ΠΈΡ… Ρƒ SQL-Π·Π°ΠΏΠΈΡ‚ΠΈ. Усі Π΄ΠΈΠ½Π°ΠΌΡ–Ρ‡Π½Ρ– Π»Ρ–Ρ‚Π΅Ρ€Π°Π»ΠΈ Π΄Π°Π½ΠΈΡ… Ρƒ Π²ΠΈΡ€Π°Π·Π°Ρ… WHERE SETΠΈVALUES ΠΌΠ°ΡŽΡ‚ΡŒ Π±ΡƒΡ‚ΠΈ Π·Π°ΠΌΡ–Π½Π΅Π½Ρ– Π·Π°ΠΏΠΎΠ²Π½ΡŽΠ²Π°Ρ‡Π°ΠΌΠΈ. Π€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ– Π΄Π°Π½Ρ– Π±ΡƒΠ΄ΡƒΡ‚ΡŒ ΠΏΠΎΠ²'язані ΠΏΡ–Π΄ час виконання Ρ‚Π° надіслані ΠΎΠΊΡ€Π΅ΠΌΠΎ Π²Ρ–Π΄ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ SQL.

ΠŸΡ€ΠΈΠ²'язка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π² ΠΌΠΎΠΆΠ΅ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΠ²Π°Ρ‚ΠΈΡΡŒ лишС для Π΄Π°Π½ΠΈΡ…. Π†Π½ΡˆΡ– Π΄ΠΈΠ½Π°ΠΌΡ–Ρ‡Π½Ρ– частини SQL-Π·Π°ΠΏΠΈΡ‚Ρƒ ΠΌΠ°ΡŽΡ‚ΡŒ Π±ΡƒΡ‚ΠΈ Π²Ρ–Π΄Ρ„Ρ–Π»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Ρ– Π·Π° Π²Ρ–Π΄ΠΎΠΌΠΈΠΌ списком допустимих Π·Π½Π°Ρ‡Π΅Π½ΡŒ.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ #5 УникнСння SQL-Ρ–Π½'Ρ”ΠΊΡ†Ρ–ΠΉ Π·Π° допомогою ΠΏΡ–Π΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ–Π² PDO

Loading...

ΠŸΡ–Π΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ– ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ Π½Π°Π΄Π°ΡŽΡ‚ΡŒΡΡ PDO MySQLi, Π° Ρ‚Π°ΠΊΠΎΠΆ Ρ–Π½ΡˆΠΈΠΌΠΈ Π±Ρ–Π±Π»Ρ–ΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Π±Π°Π· Π΄Π°Π½ΠΈΡ….

Атаки SQL-Ρ–Π½'Ρ”ΠΊΡ†Ρ–ΠΉ Π² основному засновані Π½Π° використанні ΠΊΠΎΠ΄Ρƒ, написаного Π±Π΅Π· урахування Π²ΠΈΠΌΠΎΠ³ Π±Π΅Π·ΠΏΠ΅ΠΊΠΈ. Ніколи Π½Π΅ довіряйтС Π±ΡƒΠ΄ΡŒ-якому ввСдСнню, особливо Π· Π±ΠΎΠΊΡƒ ΠΊΠ»Ρ–Ρ”Π½Ρ‚Π°, Π½Π°Π²Ρ–Ρ‚ΡŒ якщо Π²Ρ–Π½ Π½Π°Π΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ–Π· поля Π²ΠΈΠ±ΠΎΡ€Ρƒ, ΠΏΡ€ΠΈΡ…ΠΎΠ²Π°Π½ΠΎΠ³ΠΎ поля ввСдСння Π°Π±ΠΎ cookie. ΠŸΠ΅Ρ€ΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ ΠΏΠΎΠΊΠ°Π·ΡƒΡ”, Ρ‰ΠΎ Ρ‚Π°ΠΊΠΈΠΉ простий Π·Π°ΠΏΠΈΡ‚ ΠΌΠΎΠΆΠ΅ спричинити катастрофу.

БтратСгія "захист Ρƒ Π³Π»ΠΈΠ±ΠΈΠ½Ρƒ" Π²ΠΊΠ»ΡŽΡ‡Π°Ρ” ΠΊΡ–Π»ΡŒΠΊΠ° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ–Π² написання ΠΊΠΎΠ΄Ρƒ:

  • Ніколи Π½Π΅ ΠΏΡ–Π΄ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ΡΡ Π΄ΠΎ Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ… як супСркористувач Π°Π±ΠΎ власник Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ…. Π—Π°Π²ΠΆΠ΄ΠΈ використовуйтС Π½Π°Π»Π°ΡˆΡ‚ΠΎΠ²Π°Π½ΠΈΡ… користувачів Ρ–Π· ΠΌΡ–Π½Ρ–ΠΌΠ°Π»ΡŒΠ½ΠΈΠΌΠΈ привілСями.
  • Π—Π°Π²ΠΆΠ΄ΠΈ пСрСвіряйтС Π²Π²Π΅Π΄Π΅Π½Ρ– Π΄Π°Π½Ρ– Π½Π° Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π½Ρ–ΡΡ‚ΡŒ ΠΎΡ‡Ρ–ΠΊΡƒΠ²Π°Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΡƒ. Π£ PHP Ρ” Π±Π΅Π·Π»Ρ–Ρ‡ Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΠΉ для ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠΈ Π΄Π°Π½ΠΈΡ…: ΠΏΠΎΡ‡ΠΈΠ½Π°ΡŽΡ‡ΠΈ Π²Ρ–Π΄ Π½Π°ΠΉΠΏΡ€ΠΎΡΡ‚Ρ–ΡˆΠΈΡ…Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΠΉ для Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ Π·Ρ– Π·ΠΌΡ–Π½Π½ΠΈΠΌΠΈ Ρ– Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΠΉ визначСння Ρ‚ΠΈΠΏΡƒ символів(Ρ‚Π°ΠΊΠΈΡ… якis_numeric() Ρ– ctype_digit()Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π½ΠΎ) Ρ‚Π° Π·Π°ΠΊΡ–Π½Ρ‡ΡƒΡŽΡ‡ΠΈPerl-сумісними рСгулярними Π²ΠΈΡ€Π°Π·Π°ΠΌΠΈ
  • Π£ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ, якщо ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ΠΎΡ‡Ρ–ΠΊΡƒΡ” Ρ†ΠΈΡ„Ρ€ΠΎΠ²Π΅ ввСдСння, застосуйтС Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΡŽctype_digit()для ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠΈ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ… Π΄Π°Π½ΠΈΡ…, Π°Π±ΠΎ примусово Π²ΠΊΠ°ΠΆΡ–Ρ‚ΡŒ Ρ—Ρ… Ρ‚ΠΈΠΏ Π·Π° допомогоюsettype(), Π°Π±ΠΎ просто використовуйтС числовС подання Π·Π° допомогою Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ—sprintf()
  • Π―ΠΊΡ‰ΠΎ Π½Π° Ρ€Ρ–Π²Π½Ρ– Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ… Π½Π΅ ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡŽΡ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ²'язані Π·ΠΌΡ–Π½Π½Ρ–, Ρ‚ΠΎ Π·Π°Π²ΠΆΠ΄ΠΈ Π΅ΠΊΡ€Π°Π½ΡƒΠΉΡ‚Π΅ Π±ΡƒΠ΄ΡŒ-які нСчислові Π΄Π°Π½Ρ–, які Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‚ΡŒΡΡ Π² Π·Π°ΠΏΠΈΡ‚Π°Ρ… Π΄ΠΎ Π‘Π” Π·Π° допомогою ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΠΉ, Ρ‰ΠΎ Π΅ΠΊΡ€Π°Π½ΡƒΡŽΡ‚ΡŒ, спСцифічних для використовуваної Π²Π°ΠΌΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ… (Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄,mysql_real_escape_string() **sqlite_escape_string()**Ρ– Ρ‚.Π΄.). Π—Π°Π³Π°Π»ΡŒΠ½Ρ– Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ—, Ρ‚Π°ΠΊΡ– якaddslashes()корисні лишС Ρƒ ΠΏΠ΅Π²Π½ΠΈΡ… Π²ΠΈΠΏΠ°Π΄ΠΊΠ°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ MySQL Π² ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄ΡƒΠ²Π°Π½Π½Ρ– Π· Π²ΠΈΠΌΠΊΠ½Π΅Π½ΠΈΠΌ NO_BACKSLASH_ESCAPES), Ρ‚ΠΎΠΌΡƒ ΠΊΡ€Π°Ρ‰Π΅ ΡƒΠ½ΠΈΠΊΠ°Ρ‚ΠΈ Ρ—Ρ… використання.
  • Π£ ΠΆΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π°Π·Ρ– Π½Π΅ Π²ΠΈΠ²ΠΎΠ΄ΡŒΡ‚Π΅ ΠΆΠΎΠ΄Π½ΠΎΡ— Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–Ρ— ΠΏΡ€ΠΎ Π‘Π”, особливо ΠΏΡ€ΠΎ Ρ—Ρ— структуру. Π’Π°ΠΊΠΎΠΆ ΠΎΠ·Π½Π°ΠΉΠΎΠΌΡ‚Π΅ΡΡŒ Ρ–Π· Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π½ΠΈΠΌΠΈ Ρ€ΠΎΠ·Π΄Ρ–Π»Π°ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†Ρ–Ρ—: " ΠŸΠΎΠ²Ρ–Π΄ΠΎΠΌΠ»Π΅Π½Π½Ρ ΠΏΡ€ΠΎ ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ "Ρ–"Π€ΡƒΠ½ΠΊΡ†Ρ–Ρ— ΠΎΠ±Ρ€ΠΎΠ±ΠΊΠΈ Ρ‚Π° логування ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ".

ΠšΡ€Ρ–ΠΌ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΎΠ³ΡƒΠ²Π°Ρ‚ΠΈ Π·Π°ΠΏΠΈΡ‚ΠΈ Ρƒ Π²Π°ΡˆΠΎΠΌΡƒ скрипті Π°Π±ΠΎ Π½Π° Ρ€Ρ–Π²Π½Ρ– Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ…, якщо Π²ΠΎΠ½Π° Ρ†Π΅ ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡ”. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‰ΠΎ логування Π½Π΅ ΠΌΠΎΠΆΠ΅ Π·Π°ΠΏΠΎΠ±Ρ–Π³Ρ‚ΠΈ завданню шкоди, Π°Π»Π΅ ΠΌΠΎΠΆΠ΅ Π΄ΠΎΠΏΠΎΠΌΠΎΠ³Ρ‚ΠΈ ΠΏΡ€ΠΈ трасуванні Π·Π»Π°ΠΌΠ°Π½ΠΎΡ— ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ. Π›ΠΎΠ³-Ρ„Π°ΠΉΠ» корисний Π½Π΅ сам собою, Π° Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–Ρ”ΡŽ, яка Π² Π½ΡŒΠΎΠΌΡƒ ΠΌΡ–ΡΡ‚ΠΈΡ‚ΡŒΡΡ. ΠŸΡ€ΠΈΡ‡ΠΎΠΌΡƒ, як ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, корисно Π»ΠΎΠ³ΡƒΠ²Π°Ρ‚ΠΈ всі ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ– Π΄Π΅Ρ‚Π°Π»Ρ–.