![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 6.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Chcialbym sie dowiedziec jak najlepiej sie zabezpieczyc przed 'atakami' SQL Injection.
mam powiedzmy takie zapytanie do bazy mysql: [sql:1:d1814ccdee] select * from news WHERE nr = '$show' [/sql:1:d1814ccdee] I czy to wystarcza. Bo spotykalem sie z: Kod $show=intval($show);
select * from news WHERE nr = '$show' Dla mnie to jest niepotrzebne bo po 'testach' ktore przeprowadzilem moge powiedziec ze uzycje intval jest niepotrzebne bo w zapytaniu sql sa ' '. Wiec potrzebne czy niepotrzebne, a jak np. $show to ma byc tekst a nie liczba to czy wystarcza '' czy trzeba jeszcze robic addslashes() itp. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 6.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat te ' ' są wymagane przez mysql, a nie do zabezpieczenia przez sqlinjection (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
ŹŁe. Moze nie wymagane, ale potrzebne, bo jak np. pod zmienna $show bedzie wartość np. where a nie bedzie '' to ci wypluje bład (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Przy wartościach numerycznych samo intval() wystarczy. Natomiast sprawa sie komplikuje przy stringach. :? jak pod $show podstawimy where to wypluje blad ale wlasnie wtedy mozna uzyc tego bledu. A jak sa ' ' to mozna podstawiac do woli where union itp. i nie bedzie bledu. Czyli to jest zabezpieczenie... Wiec tak: ja uwazam ze ' ' wystarcza i nie potrzeba intval i mysql_escape_string czy addslashes bo ' ' nie da sie ominac. Myle sie? To moze mi ktos udowodni ze da sie Np. przy: SELECT * from news WHERE nr = '$show' ominac to i dorzucic AND autor=tomasz. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 17:37 |