Napisałem sobie skrypt który zapisuje mi użytkowników do bazy danych.Zastanawiam się nad jego bezpieczeństwem moglibyście rzucić okiem ?
Proszę, bo naczytałem się w internecie: zawsze addslashed i htmlspecialchars(), moża też spotkać coś takiego :
$email = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email"]))), ENT_QUOTES); <- tworzenie takiego czegoś dla hasła kompletnie go zmieni.
Przeglądałem i zastanawiałem się nad moim kodem wiele razy, według mnie nie ma żadnej luki.Ale nie daje mi to spokoju.
if( $this->ajax ){
$email = $_POST['email'];
$password = $_POST['password'];
$recaptcha = $_POST['recaptcha'];
$challenge = $_POST['challenge'];
$recaptchaOK = false;
require_once('phpClass/recaptcha.php');
$privatekey = '6Lfn8tsSAAAAALtc6Ny******************';
$resp = recaptcha_check_answer ($privatekey,$_SERVER["REMOTE_ADDR"],$challenge,$recaptcha);
$recaptchaOK = ( $resp->is_valid ) ? true : false ;
}
$passwordOK = false;
require_once('phpClass/phpass.php');
$hasher = new PasswordHash(8, TRUE);
$password = $hasher->HashPassword($password);
$passwordOK = ( strlen($password) >= 20
) ?
true : false ; }
$emailOK = false;
$emailOK = ( preg_match('/^[0-9a-zA-Z_.-]+@[0-9a-zA-Z.-]+\.[a-zA-Z]{2,3}$/', $email) === 1
) ?
true : false ; $emailTaken = sql
::qq('SELECT `id` FROM `user` WHERE `email`=? ','s',array($email)); $emailTaken = ( $emailTaken ) ? true : false ;
}
if( !$emailTaken && $emailOK && $passwordOK && $recaptchaOK ){
$sqlR = sql
::qq('INSERT INTO `user` (`email`,`password`) VALUES (?,?)','ss',array($email,$password)); $this->body = array('status'=>true
); }else{
if( !$recaptchaOK ) $error['wrongRecaptcha']= $this->l('wrongRecaptcha');
if( $emailTaken ) $error['takenEmail']= $this->l('takenEmail');
if( !$emailOK ) $error['wrongEmail']= $this->l('wrongEmail');
if( !$passwordOK ) $error['wrongPassword']=$this->l('wrongPassword');
$this->body = array('status'=>false
,'info'=>$error); }
}else{
error::NotAJAX();
}
/---------------------------------
przepraszm za dziwne tab'y. Ten edytor coś wyzmieniał mi dlatego jest nieczytelnie.
Ten post edytował tadeurz 1.02.2013, 16:51:09