Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] SQL injection
mihipoznan
post
Post #1





Grupa: Zarejestrowani
Postów: 194
Pomógł: 0
Dołączył: 27.02.2008

Ostrzeżenie: (0%)
-----


Jak powinno wyglądać zapytanie do bazy, które jest "odporne" na atak SQL injection jeżeli jest COUNT ? Przykładowo:
  1. <?php
  2. $zapytanie = "SELECT COUNT(*) FROM test";
  3. ?>

Resztę wiem, tylko z tym countem się zastanawiam..
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Berg
post
Post #2





Grupa: Zarejestrowani
Postów: 180
Pomógł: 37
Dołączył: 1.05.2008
Skąd: Białystok

Ostrzeżenie: (0%)
-----


Przykład jaki podałeś jest imo całkowicie bezpieczny. To podstawianie nieprzefiltrowanych danych zewnętrznych sprawia, że istnieje możliwość SQL Injection (lub też brak apostrofów przy danych tekstowych). Samo COUNT jest samo w sobie nieszkodliwe.
Go to the top of the page
+Quote Post
mihipoznan
post
Post #3





Grupa: Zarejestrowani
Postów: 194
Pomógł: 0
Dołączył: 27.02.2008

Ostrzeżenie: (0%)
-----


Okej, dzięki smile.gif A w przypadku limitu muszę każdą zmienną zabezpieczać ? (jak najlepiej addslashes() ) ?
Go to the top of the page
+Quote Post
Danone
post
Post #4





Grupa: Zarejestrowani
Postów: 169
Pomógł: 16
Dołączył: 18.10.2006
Skąd: Olsztyn/Wrocław

Ostrzeżenie: (0%)
-----


Tutaj masz wszystko ładnie opisane jak się bronić przed tego typu atakami smile.gif

http://forum.php.pl/index.php?showtopic=23...=sql++injection

Ten post edytował Danone 4.05.2008, 00:18:20
Go to the top of the page
+Quote Post
PawelC
post
Post #5





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Poczytaj sobie przyklejony temat o sql injection, tam jest naprawdę dużo wszystkiego, wiele przykładów i jeszcze więcej rozwiązań.

EDIT: Danone wyprzedziłeś mnie winksmiley.jpg Post do kosza

Ten post edytował ExPlOiT 4.05.2008, 00:15:04
Go to the top of the page
+Quote Post
mihipoznan
post
Post #6





Grupa: Zarejestrowani
Postów: 194
Pomógł: 0
Dołączył: 27.02.2008

Ostrzeżenie: (0%)
-----


Przeczytałem cały temat w w/w linku i okej już wiem..ale jak mam limit to zabezpieczać tylko zmienne ? Przykładowo..:

  1. <?php
  2. $page = $_GET['page'];
  3. $ilestr = $_GET['ilestr'];
  4.  
  5.  
  6. if(SecureQuery($page, 'string'))
  7. (SecureQuery($ilestr, 'string'))
  8.  
  9. $sql= 'SELECT * FROM 'test' LIMIT ".(("'.$page-1'")*"'$ilestr'").",".'"$ilestr'"*"'$page.'"";
  10. $result = mysql_query($sql);
  11. ?>


W tel linijce mi się chyba pomieszało trochę..orygnalana to :
  1. <?php
  2. $sql= "SELECT * FROM test LIMIT ".(($page-1)*$ilestr).",".$ilestr*$page."";
  3. ?>
Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


  1. <?
  2.  
  3. $page = (int) $_GET['page'];
  4. $ilestr = (int) $_GET['ilestr'];
  5.  
  6. $query = sprintf('SELECT * FROM test LIMIT %s, %s;', $page * $ilestr, $ilestr);
  7. $result = mysql_query($query);
  8.  
  9. ?>
Go to the top of the page
+Quote Post
mihipoznan
post
Post #8





Grupa: Zarejestrowani
Postów: 194
Pomógł: 0
Dołączył: 27.02.2008

Ostrzeżenie: (0%)
-----


A dlaczego tak ? smile.gif
Go to the top of the page
+Quote Post
Crozin
post
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


A dlaczego tak nie? Jest bezpieczne - można co najwyżej sprawdzić czy $ilestr (jak rozumiem ta zmienna określa ile wyników ma być na stronie) jest większa od zera ($page może być równa zeru - ją można by sprawdzić czy nie jest mniejsza od zera)
  1. <?php
  2. if($page < 0 || $ilestr <= 0)
  3. exit('Blad');
  4. ?>
Go to the top of the page
+Quote Post
mihipoznan
post
Post #10





Grupa: Zarejestrowani
Postów: 194
Pomógł: 0
Dołączył: 27.02.2008

Ostrzeżenie: (0%)
-----


Jest okej, dzięki smile.gif Masz rację biggrin.gif
Go to the top of the page
+Quote Post
bełdzio
post
Post #11





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


ble ble ble ;-) po to powstalo ctype_* żeby z niego korzystać, tak samo jak filtry


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 02:04