![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 1.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam, proszę o pomoc, czy takie zapytanie jest bezpieczne z punktu widzenia ataku na moją stronę?:
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 305 Pomógł: 25 Dołączył: 27.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie, nie jest w 100% bezpieczne.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Mnie ciągle zastanawia dlaczego ludzie stosują przestarzałe mysql_, zamiast używać PDO i zapytań preparowanych, gdzie o SQL Injection można praktycznie zapomnieć...
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Mnie ciągle zastanawia dlaczego ludzie stosują przestarzałe mysql_, zamiast używać PDO i zapytań preparowanych, gdzie o SQL Injection można praktycznie zapomnieć... Ale zapytania przygotowywane nie są do zabezpieczania przed SQL Injection... -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Ale czy to nie jest tak, że wtedy silnik bazy wie co jest parametrem a co zapytaniem, i nie trzeba tego zabezpieczać?
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Zapytania przygotowywane rzeczywiście przed tym zabezpieczają ale nie służą do tego. Służą do wykonywania zapytań w pętli, przez co np nie muszą wielokrotnie parsować całego zapytania.
-------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
PreparedStatements mają to do siebie, że do bazy zapytanie i jego parametry lecą osobno. PDO nie "scala" tego na zasadzie:
Mimo wszystko takie zapytania użyte niepoprawnie nadal mogą być podatne na tak trywialne ataki jak SQLInjection. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
takie zapytania użyte niepoprawnie nadal mogą być podatne na tak trywialne ataki jak SQLInjection. Przykład? -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
W sumie to powinienem cofnąć to zdanie. Miałem na myśli coś w stylu:
Ale w takim przypadku raczej ciężko mówić o Prepared Statement (jakoś tak "przygotowane wyrażenie" czy inne polskie tłumaczenia mi nie pasują ![]() |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 103 Pomógł: 2 Dołączył: 6.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ale czy to nie jest tak, że wtedy silnik bazy wie co jest parametrem a co zapytaniem, i nie trzeba tego zabezpieczać? Czyli uzywajac PDO nie musimy juz zabezpieczac danych w zmiennych, przekazywanych do zapytania (bazy) i otrzymywanych z bazy? Jesli tak, to trzeba chyba sie przerzucic na to PDO ![]() |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 1.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Szanowni Państwo, a wracając do tematu ;-) ?
Co jeszcze jest w kodzie do uszczelnienia ? ![]() Ten post edytował qpeace1 22.11.2010, 16:49:05 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 305 Pomógł: 25 Dołączył: 27.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Szanowni Państwo, a wracając do tematu ;-) ? Co jeszcze jest w kodzie do uszczelnienia ? ![]() jak już zostało napisane, podany kod nigdy nie będzie wystarczająco bezpieczny - aby rozwiązać ten problem zastosuj PDO i prepared staitments. nawiasem mówiąc, nie rozumiem tego fragmentu kodu:
dlaczego blokujesz tabelę na czas wstawiania JEDNEGO rekordu? rozumiem, gdybyś wstawiał kilka integralnie połączonych ze sobą rekordów (czy aktualizował/usuwał), ale w tej sytuacji? |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 1.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
dlaczego blokujesz tabelę na czas wstawiania JEDNEGO rekordu? rozumiem, gdybyś wstawiał kilka integralnie połączonych ze sobą rekordów (czy aktualizował/usuwał), ale w tej sytuacji? Jestem beginer i boję się, że MySQL może nie mieć wbudowanej ochrony wstawiania nowego rekordu, co przy jednoczesnym (mało, ale prawdopodobnej sytuacji) wstawianiu rekordu przez 2 osoby może teoretycznie wysypać całą bazę {chyba, bo jak wspomniałem nie mam pewności}. Nie bardzo rozumiem - dlaczego to nie ochrania przez Injection-em, przecież w POST nic nie da się tu przemyciś {taką miałem nadzieję}, mógłbyś rozwinąć myśl? (tj. jak można tu dostać się niepowołanie do bazy) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 03:57 |