Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> preg i zabezpieczeia
virtualman
post
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 17.03.2011

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


Piszę skrypt i postanowiłem go zabezpieczyć, ale mam pytanie i jeden błąd...
Najpierw zaprezentuję wam błąd:
[phpl]Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 6 in C:\xampp\htdocs\include\register.php on line 65[/phpl]

A teraz myślę, że te linijki kodu:
  1. f($pass!=$pass1 || !preg_match('/^([A-Za-z0-9\_\-\@]{2,12})$/Diu', $nick) || !preg_match('/^{6,12}$/', $pass) || !preg_match('/^[a-zA-Z\.\-\_]+\@[a-zA-Z0-9\.\-\_]+\.[a-z]{2,4}$/D', $mail) || empty($regulamin) ) echo '<div id="blad" style="height="200px;"">W formularzu znaleziono błędy. Popraw je!<div>';
  2. // jeśli jest ok...
  3. else
  4. {
  5. $nick = mysql_real_escape_string($nick);
  6. $nick = mysql_real_escape_string($mail);

I tu 2 pytania:
Co jest nie tak - czemu wywala error, a po 2 czy takie zabezpieczenia będą dobre?
Powód edycji: [wookieb]: Zmiana tematu
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1.
Kod
/^{6,12}$/
Co może wystąpić od 6 do 12 razy? Nic. Stąd ten błąd.
2. Od sprawdzenia poprawności maila masz filter_var, a długości strlen.
Go to the top of the page
+Quote Post
wookieb
post
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Czekam na PW z poprawną nazwą tematu
// Otwieram
Powód edycji: [wookieb]:
Go to the top of the page
+Quote Post
virtualman
post
Post #4





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 17.03.2011

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


Okej wszystko śmiga... teraz tylko pozostaje pytanie co sądzicie o takim zabezpieczeniu? Sprawdzi się? Aktualny kod wygląda tak:
  1. // sprawdzamy poprawność formularza
  2. if($pass!=$pass1 || !preg_match('/^([A-Za-z0-9\_\-\@]{2,12})$/Diu', $nick) || strlen($pass)<6 || strlen($pass)>12 || !filter_var($mail, FILTER_VALIDATE_EMAIL) || empty($regulamin) ) echo '<div id="blad" style="height="200px;"">W formularzu znaleziono błędy. Popraw je!<div>';
  3. // jeśli jest ok...
  4. else
  5. {
  6. $nick = mysql_real_escape_string($nick);
  7. $mail = mysql_real_escape_string($mail);

A przy większym formularzu tak:


Ten post edytował virtualman 17.03.2011, 20:39:46
Go to the top of the page
+Quote Post
Fifi209
post
Post #5





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Usuń tego preg_matcha w ogóle, samo filter_var wystarczy + strlen
Go to the top of the page
+Quote Post
virtualman
post
Post #6





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 17.03.2011

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


a jak sprawdzić czy nie ma jakichś niedozwolonych znaków w nicku? I czy to mnie obroni przed SQL Injection. oraz XSS
A to od razu pytanie do sprawdzania url'a tym filter_var < na jakiej zasadzie to działa? czy jeśli mam przesyłanie metodą GET w postaci profil.php?nick=$nick to zabezpieczy to trochę?
Go to the top of the page
+Quote Post
Fifi209
post
Post #7





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


To jest właściwie jak gotowe wyrażenia regularne. Co do samego zabezpieczenia i tak radzę filtrować dodatkowo przed dodaniem do bazy.
Go to the top of the page
+Quote Post
virtualman
post
Post #8





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 17.03.2011

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


A jaki filtr wybrać do nicku i co on będzie dokładnie robił. 2 -> z sprawdzaniem URLu przepuści " www.strona.pl/profil.php?nick=$nick" ? to co? Mam powtórzyć to sprawdzanie jeszcze przed samym dodaniem do bazy?
Go to the top of the page
+Quote Post

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: 17.09.2025 - 16:01