Webcity.pl


  Edytor BBCode w Java...

  Korzystanie i tworze...

  Wbrew regułom

  Kontrola danych wejś...

  Singleton w PHP

 

 02.02.06 - [new] E-video - artykuł

 30.01.06 - [update] Artykuł o sesjach

 18.12.05 - [update] PDO - artykuł

 19.08.05 - [new+upd] Aktualizacja materia...

 26.04.05 - [update] Nowy artykuł

Twój domowy serwer!

  Pomocy WML
[php]Sesje nie działają, ...
[actionscript 2.0] [flash...
Problem z talicami w php
[ocena] llll.pl darmowe a...
Kamera na stronie interne...
Kamera na stronie interne...
[xml] Jak wyciągnąć dane
Wizualizacja w JS - POMOC
Web Developer - stała / f...

... i wiele innych wątków na forum ›

Partnerzy
› allRSS.info - katalog zasobów RSS
› iloveflyer.org - webdesign
› webserv.pl - serverpack
› skryptoteka.pl - mnóstwo skryptów
› vel.pl - hosting
› TelePraca.net - pracuj swobodnie
› PHP Solutions - magazyn PHP
› HELION - wydawnictwo informatyczne

Ksišżka dnia

CityMag
Wpisz swój e-mail, aby zaprenumerować nasz Magazyn, który zawiera najnowsze informacje ze świata i najciekawsze teksty.
 

Szukasz czegoś?
Nasza wyszukiwarka znajdzie wszystko, czego szukasz.
 

Szukanie zawansowane


  Reklama
  Redakcja
  Hosting
  Kanał

© WebCity.pl Team
 
 
  Forum Forum
Kursy Kursy
Porady Porady
Recenzje Recenzje
Newsy Newsy
Katalog stron WWW Katalog
Skrypty PHP Skrypty
Download Oferty i praca
Artykuły:
 Teoria
 Praktyka
 Promocja
 Inne
 

 Webcity.pl |

SQL Injection
Autor: Zyx
   Jedną z najprostszych i najskuteczniejszych form włamywania się do serwisów WWW jest wykorzystanie błędów skryptu związanych ze wstawianiem do zapytań SQL danych. Ataki tego typu noszą nazwę SQL Injection, a z wielkiej podatności na nie znane są takie skrypty, jak phpBB, czy PHP-NUKE.
   Wszystko polega na tym, że zapytania SQL do ograniczania tekstów używają apostrof ( ' ). Aby wpisać taki znak jako jego fragment, należy go poprzedzić, podobnie jak w PHP, backslashem, gdyż inaczej baza danych uzna, że tekst kończy się w tym miejscu i potraktuje dalszą jego część jako samo zapytanie. Jeżeli danych z formularza i adresu URL nie przepuścimy przez funkcję, która doda takie backslashe, narazimy się na poważne niebezpieczeństwo. Hacker będzie mógł bowiem zmieniać warunki zapytań poprzez zwykły formularz i w ten sposób np. ominąć sprawdzanie hasła przy logowaniu. Oto przykład. Mamy niezabezpieczone zapytanie:

"SELECT id FROM uzytkownicy WHERE login='".$_POST['login']."' AND password = '".sha1($_POST['password'])."'

Kiedy zalogujemy się loginem "ziutek" i hasłem "ppp", PHP wyśle do bazy takie zapytanie:

SELECT id FROM uzytkownicy WHERE login='ziutek' AND password = 'tu_hash_sha1'

Teoretycznie wszystko jest poprawnie. Ale jeśli za login wpiszę admin' OR NOT '0, otrzymamy takie zapytanie:

SELECT id FROM uzytkownicy WHERE login='admin' OR NOT '0' AND password = 'tu_hash_sha1'

Jak widzisz, zmodyfikowany został warunek. Teraz jest on tak napisany, że wpuści nas jako "admin" nawet wtedy, gdy nie znamy hasła!

Aby zapobiec temu, należy przepuścić $_POST['login'] np. przez funkcję mysql_real_escape_string(). Wtedy zawsze wpisany w polu "Login" ciąg będzie traktowany jak login bez względu na znajdujące się w nim znaki.
   Przy zabawie funkcjami dodającymi backslashe należy brać poprawkę na ustawienia Magic Quotes (opisane w innej poradzie), gdyż inaczej skrypt zacznie zachowywać się nieprzewidywalnie!

Powrót

 
 
Twój domowy serwer!