Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] PDO - ochrona danych
Majkelo23
post
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

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


Wiele naczytałem się na forum, głównie tym, że PDO jest cacy i nic innego nie warto używać tylko pdo bo nie trzeba się martwić o to, że ktoś zrobi nam niemiłą niespodziankę w postaci 'hacked by gimbus2013'. Teraz się zastanawiam... Jeśli mam zmienne typu $_POST lub $_GET to zwyczajnie, jeśli chcę liczbę - daję to w intval(), a jeśli tekst to tylko trim() i tyle. Pozostałą rolę miało odegrać tutaj bindowanie danych przy wybraniu odpowiedniego typu (PARAM_STR/PARAM_INT).
Próbowałem teraz jak to jest naprawdę i zauważyłem, że jak wklepię regułkę w input, tak ja widzę też w phpmyadminie (mówię o bindzie ustawionym na param_str i polu TEXT). Wklepałem
  1. ' AND 1=1 /*
i w całości przeszło do bazy danych bez jakiegokolwiek backslasha. To samo z htmlowymi znakami:
  1. <script type="text/javascript">alert("test");</script>
też bez zmian - w całości poszło do bazy. Czy tak ma być ? Czy należy dodatkowo jeszcze filtrować jakoś dane ? Czy PDo chroni tylko i wyłącznie przed sql injection czy może przed xss też uchroni? ;>

Ten post edytował Majkelo23 25.11.2013, 19:47:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Majkelo23
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

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


No dobra, tylko jeśli ja będę w swoim kodzie 20 razy używał np. $row['text'] to również 20 razy będę musiał tą zmienną przelecieć przez htmlspecialchars - czy nie prościej i krócej byłoby sprawdzić wartość tej zmiennej raz po stronie zapisu do bazy i przy wyciąganiu już się tym nie przejmować ?
Go to the top of the page
+Quote Post
Turson
post
Post #3





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Cytat(Majkelo23 @ 25.11.2013, 20:04:28 ) *
No dobra, tylko jeśli ja będę w swoim kodzie 20 razy używał np. $row['text'] to również 20 razy będę musiał tą zmienną przelecieć przez htmlspecialchars - czy nie prościej i krócej byłoby sprawdzić wartość tej zmiennej raz po stronie zapisu do bazy i przy wyciąganiu już się tym nie przejmować ?

Powiedzmy, że będziesz chciał potem coś wyszukać, porównać itd, to wtedy np. dane z formularza przed porównianiem czy wyszukaniem będziesz też musiał przeprawdzić przez tą procedurę, aby znalazło wyniki
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 03:15