Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Jak programować
Jo-Jo
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 31.07.2012

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


Zabrałem się za prace Inżynierską (specjalistyczny CMS)
Zacznę od tego ze moja znajomość PHP pozwala żeby go napisać
Pytanie brzmi czy moje rozwiązanie jest tym najlepszym

Parę pytań na początek:

(chodzi o wprowadzanie danych w Panelu Admina)
Walidacja formularzy
Czy sprawdzać każdą zmienną przez preg_match?
a może warto robić to w Java Script?
lub wystarczy za pomocą PDO chronić się przed sql injection, a co wprowadzi użytkownik w danym polu jest nie ważne?
a może inna metoda?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Cytat
Czy sprawdzać każdą zmienną przez preg_match?


NIE. A po co? Do tego podchodzi się inaczej. Pamiętaj, że najlepsza możliwa walidacja jest wówczas gdy dokładnie wiemy czego się mamy spodziewać. Jeżeli przykładowo ma to być liczba - to preg_match jest zbędny. Staraj się "przewidywać" i planować to co użytkownik może wprowadzić - w przypadku takich rzeczy jak na przykład imię, które nie jest może tak istotne można sobie walidacje nieco uprościć ale i tak musisz zabezpieczać się przed XSS czyli eliminować wpisy zawierające podejrzane znaki - nikt przecież nie ma w imieniu znaku > ani < itd.. Tutaj przyda się preg_match.

Cytat
a może warto robić to w Java Script?


Walidacja musi być po stronie serwera przed podaniem jej do bazy (zakładając, że używasz PDO w taki sposób by eliminować SQL-inj.). Dodanie walidacji po stronie klienta czyli javascript zależy od chęci i czasu nad projektem - należy też pamiętać, że walidacja JS musi być taka sama jak walidacja PHP i zmiana w jednej musi ciągnąć za sobą zmianę w drugiej. Jest to ogólnie zabieg pomagający użytkownikowi. Jeżeli nie chcesz robić pełnej walidacji JS to zrób przynajmniej sprawdzanie czy są wypełnione wymagane pola przed wysłaniem tego do PHP.

Cytat
lub wystarczy za pomocą PDO chronić się przed sql injection, a co wprowadzi użytkownik w danym polu jest nie ważne?


To podejście jest strasznie nie zdrowe - bardzo szybko okazuje się, że ludzie wpisują rozmaite głupoty a silnik MySQL przykładowo pozwala na wprowadzanie dziwnych danych innego typu pod dany typ bez wyrzucania błędów zatem zapisują się jeszcze większe idiotyzmy nie wspominając o XSS itp... Nie myśl sobie że jeśli robisz panel administracyjny dla "zaufanych" użytkowników, którzy raczej nie będą chcieli sobie samemu zrobić krzywdę, to możesz odpuścić bezpieczeństwo (nikt przecież nie będzie próbował zrobić sql-injection w panelu admina...). Jeśli ktoś niechcący dostanie się do takiego panelu to ma otwartą drogę - PA powinien zatem być porządnie zabezpieczony.

Co do innych metod poszukaj info o
filter_var
czy
validate filters

Walidację można wykonywać na wieeeele sposobów:

  1.  
  2. $liczba = '12345';
  3.  
  4. if(is_numeric($liczba)) // ...
  5.  
  6. if(preg_match('/^\d+$/',$liczba)); // ... totalna bzdura - ale można
  7.  
  8. if($liczba == (int) $liczba)) // ...
  9.  
  10. // itd...
  11.  
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: 14.10.2025 - 09:13