Securizarea formularelor
Scris: Mie Iun 29, 2011 9:06 pm
Scriptul de mai jos este destul de puternic pentru un formular ( caracterele speciale pot cauza probleme, se pot trimite date automat ...)
Imi puteti spune daca am omis ceva ? Sunt functii mai rapide si mai bune decat acestea ? Avetii si alte ideii mai bune pentru securitate ?
Datele din formular sau din url pot afecta si conditiile de genul if(strlen($_POST['name']) < 1 OR strlen($_GET['name'])){ .... }
sau produc erori doar la db ?
<?php
session_start();
$a = "asd@sa dssd adsa$dfd32ssa";
function id(){
global $a;
$b = sha1(uniqid ($a . mt_rand(0, 9) . $a . mt_rand(0, 9) . $a, true));
$_SESSION['id'] = $b;
return $b;
}
if(isset($_POST) AND $_POST['id'] === $_SESSION['id']){
$_POST = array_map("strip_tags", $_POST);
$_POST = array_map("trim", $_POST);
if(strlen($_POST['name']) < 2 OR strlen($_POST['name']) > 20){
$error = "Numele trebuie sa contina minim 2 caractere si maxim 20.";
}elseif(strlen($_POST['prenume']) < 2 OR strlen($_POST['prenume']) > 20){
$error = "Prenumele trebuie sa contina minim 2 caractere si maxim 20.";
}else{
$nume = mysql_real_escape_string($_POST['nume']);
$prenume = mysql_real_escape_string($_POST['prenume']);
//urmeaza adaugarea datelor in db
}}
Este bun scriptul de mai jos pentru a verifica daca este un domeniu sau o pagina de domeniu si nu altceva ?
if(preg_match("/^https?:\/\/(www.)?[a-zA-Z0-9]([a-zA-Z0-9-]?)+[a-zA-Z0-9]\.(ro|com|net|info|org)(\/[a-zA-Z0-9\.\/%&=\?\-_[\]]*)*$/i", $_POST['link']) != 1){
echo "Adresa url trebuie sa fie de forma http://www.domeniu.ro / http://domeniu.ro / http://www.domeniu.ro /pag ....";
}
Multumes!
Imi puteti spune daca am omis ceva ? Sunt functii mai rapide si mai bune decat acestea ? Avetii si alte ideii mai bune pentru securitate ?
Datele din formular sau din url pot afecta si conditiile de genul if(strlen($_POST['name']) < 1 OR strlen($_GET['name'])){ .... }
sau produc erori doar la db ?
<?php
session_start();
$a = "asd@sa dssd adsa$dfd32ssa";
function id(){
global $a;
$b = sha1(uniqid ($a . mt_rand(0, 9) . $a . mt_rand(0, 9) . $a, true));
$_SESSION['id'] = $b;
return $b;
}
if(isset($_POST) AND $_POST['id'] === $_SESSION['id']){
$_POST = array_map("strip_tags", $_POST);
$_POST = array_map("trim", $_POST);
if(strlen($_POST['name']) < 2 OR strlen($_POST['name']) > 20){
$error = "Numele trebuie sa contina minim 2 caractere si maxim 20.";
}elseif(strlen($_POST['prenume']) < 2 OR strlen($_POST['prenume']) > 20){
$error = "Prenumele trebuie sa contina minim 2 caractere si maxim 20.";
}else{
$nume = mysql_real_escape_string($_POST['nume']);
$prenume = mysql_real_escape_string($_POST['prenume']);
//urmeaza adaugarea datelor in db
}}
Este bun scriptul de mai jos pentru a verifica daca este un domeniu sau o pagina de domeniu si nu altceva ?
if(preg_match("/^https?:\/\/(www.)?[a-zA-Z0-9]([a-zA-Z0-9-]?)+[a-zA-Z0-9]\.(ro|com|net|info|org)(\/[a-zA-Z0-9\.\/%&=\?\-_[\]]*)*$/i", $_POST['link']) != 1){
echo "Adresa url trebuie sa fie de forma http://www.domeniu.ro / http://domeniu.ro / http://www.domeniu.ro /pag ....";
}
Multumes!