![]() |
![]() |
![]()
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: 691 Pomógł: 0 Dołączył: 6.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Wiec potrzebne czy niepotrzebne, a jak np. $show to ma byc tekst a nie liczba to czy wystarcza '' czy trzeba jeszcze robic addslashes() itp.
W przypadku MySQLa addslashes akurat jest w porządku, ale ogólnie to nie jest funkcja do tego. Korzystając z tej bazy lepiej uzywać funkcji mysql_escape_string gdyż służy ona właśnie do tych celów (mimo, iż robi praktycznie to samo co addslashes). Poza tym w niektórych bazach (np. Sybase albo MSSQL) eskejpowanie polega na powieleniu eskejpowanego znaku, a nie poprzedzeniu go backslashem i wtedy addslashes nie tylko nie pomoże ale i zaszkodzi. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 21:39 |