• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PDO a ochrona przed mysql injection

0 głosów
118 wizyt
pytanie zadane 4 dni temu w PHP, Symfony, Zend przez Paproch Użytkownik (590 p.)
Witam

Zastanawiam się nad zabezpieczeniami skryptu. Wszystkie zapytania do bazy ma zrobione na PDO. Przy rejestrowaniu użytkownika i logowaniu użyłem wyrażeń regularnych w celu wycięcia ewentualnych niebezpiecznych znaków. Dozwolone są tko [a-z] [0-9]

Dodatkowo mam formularz kontaktowy, gdzie można wpisać dowolny tekst bez żadnych ograniczeń. Dane są zapisywane w bazie. Tutaj również użyłem PDO i  zrobiłem to schematem prepare, bindvalue, execute.

Pytanie brzmi, czy same PDO zabezpieczy mnie w pełni przed mysql injection? Bo niby teoretycznie zabezpiecza, a jak jest w praktyce? Lub w jaki sposób mógłbym jeszcze zabezpieczyć sie przed ewentualnymi atakami?

Czy użycie wyrażenia regularnego które wycinalo by znaki tj. = - ' " *% jest dobrym pomysłem?

Pozdrawiam
1
komentarz 4 dni temu przez Patrycjerz Mędrzec (187,390 p.)
Pytam z ciekawości… Jeśli samo PDO chroni przed SQL injection, to po co jeszcze ograniczony zakres znaków (nie spowodowany logiką biznesową)?
komentarz 4 dni temu przez Paproch Użytkownik (590 p.)
Login nie może zawierać polskich znaków, zalecenie odgórne. Dlatego taka restrykcja.
komentarz 4 dni temu przez adrian17 Ekspert (203,080 p.)
To... brzmi jak celowe zmniejszenie bezpieczeństwa.
komentarz 4 dni temu przez Paproch Użytkownik (590 p.)
A coś więcej? Dlaczego tak sądzisz? Cały czas się uczę, więc uzasadnij proszę.
1
komentarz 4 dni temu przez Comandeer Mentor (464,420 p.)

@adrian17, restrykcja dotyczy loginu. Ufam, że hasła nie mają takich obostrzeń. 

komentarz 4 dni temu przez Aisekai Nałogowiec (37,180 p.)
A nie możesz użyć jakiegoś ORMa który by nie sklejał dynamicznie zapytania, tylko używał jakiś named parameters lub coś w ten deseń?
komentarz 4 dni temu przez adrian17 Ekspert (203,080 p.)
To... jest właśnie PDO. To już jest zabezpieczone.
komentarz 4 dni temu przez Paproch Użytkownik (590 p.)
@adrian17 o to mi chodziło. Wiem że PDO jest bezpieczne, ale się zastanawiałem jakie są powszechnie stosowane praktyki wśród programistów. Czy stosuje się coś jeszcze, jak tak to co.

Dzięki tak czy inaczej za odpowiedź

1 odpowiedź

+1 głos
odpowiedź 4 dni temu przez Comandeer Mentor (464,420 p.)
wybrane 4 dni temu przez Paproch
 
Najlepsza
Warto dorzucić: https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php/60496#60496

No i warto też przypomnieć, że prepared statements wypada używać zawsze, gdy w zapytaniu są jakiekolwiek dane z zewnątrz, nawet te, które wyciągnęliśmy właśnie z bazy. Inaczej narażamy się na 2nd order SQLi.
komentarz 4 dni temu przez Paproch Użytkownik (590 p.)
Dziękuję bardzo za rzeczową odpowiedź.

Podobne pytania

0 głosów
1 odpowiedź 63 wizyt
pytanie zadane 16 lutego w PHP, Symfony, Zend przez gucisz Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 183 wizyt
0 głosów
2 odpowiedzi 487 wizyt
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.Kompozycja

66,984 zapytań

113,890 odpowiedzi

241,331 komentarzy

46,940 pasjonatów

Przeglądających: 237
Pasjonatów: 13 Gości: 224

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...