Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rejestracja użytkowników
tadeurz
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 1
Dołączył: 25.04.2009

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


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.

  1. if( $this->ajax ){
  2. $email = $_POST['email'];
  3. $password = $_POST['password'];
  4. $recaptcha = $_POST['recaptcha'];
  5. $challenge = $_POST['challenge'];
  6.  
  7. $recaptchaOK = false;
  8. if( !empty($recaptcha) && !empty($challenge) ){
  9. require_once('phpClass/recaptcha.php');
  10. $privatekey = '6Lfn8tsSAAAAALtc6Ny******************';
  11. $resp = recaptcha_check_answer ($privatekey,$_SERVER["REMOTE_ADDR"],$challenge,$recaptcha);
  12. $recaptchaOK = ( $resp->is_valid ) ? true : false ;
  13. }
  14.  
  15. $passwordOK = false;
  16. if( !empty($password) && strlen($password) < 40 ){
  17. require_once('phpClass/phpass.php');
  18. $hasher = new PasswordHash(8, TRUE);
  19. $password = $hasher->HashPassword($password);
  20. $passwordOK = ( strlen($password) >= 20 ) ? true : false ;
  21. }
  22.  
  23. $emailOK = false;
  24. if( !empty($email) ){
  25. $emailOK = ( preg_match('/^[0-9a-zA-Z_.-]+@[0-9a-zA-Z.-]+\.[a-zA-Z]{2,3}$/', $email) === 1 ) ? true : false ;
  26. $emailTaken = sql::qq('SELECT `id` FROM `user` WHERE `email`=? ','s',array($email));
  27. $emailTaken = ( $emailTaken ) ? true : false ;
  28. }
  29.  
  30. if( !$emailTaken && $emailOK && $passwordOK && $recaptchaOK ){
  31. $sqlR = sql::qq('INSERT INTO `user` (`email`,`password`) VALUES (?,?)','ss',array($email,$password));
  32. $this->body = array('status'=>true);
  33. }else{
  34. if( !$recaptchaOK ) $error['wrongRecaptcha']= $this->l('wrongRecaptcha');
  35. if( $emailTaken ) $error['takenEmail']= $this->l('takenEmail');
  36. if( !$emailOK ) $error['wrongEmail']= $this->l('wrongEmail');
  37. if( !$passwordOK ) $error['wrongPassword']=$this->l('wrongPassword');
  38. $this->body = array('status'=>false,'info'=>$error);
  39. }
  40. }else{
  41. error::NotAJAX();
  42. }


/---------------------------------
przepraszm za dziwne tab'y. Ten edytor coś wyzmieniał mi dlatego jest nieczytelnie.

Ten post edytował tadeurz 1.02.2013, 16:51:09
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 21.08.2025 - 11:32