Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prosba o sprawdzenie skryptu pod katem SQL Injection
rakoo
post 10.12.2009, 17:47:29
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 10.12.2009

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


Witam, robie serwer pod jedna z gier online.
Po doglebnym analizie kodu zauwazylem ze dane z formularzy z "gotowca stronki" nie sa wogole filtrowane, wiec postanowilem to naprawic.
Moglby ktos mi powiedziec czy wszystko zrobilem dobrze?

Fukncja odbierajace dane z formularza rejestracji i przekazujace ja do bazy danych:

  1. function register()
  2. {
  3. $account = stripslashes($_POST['account']);
  4. $password = stripslashes($_POST['password']);
  5. $repassword = stripslashes($_POST['repassword']);
  6. $email = stripslashes($_POST['email']);
  7. $squestion = stripslashes($_POST['question']);
  8. $sanswer = stripslashes($_POST['answer']);
  9. $verifyinput2 = stripslashes($_POST['verifyinput2']);
  10. $country = stripslashes($_POST['country']);
  11. $gender = stripslashes($_POST['gender']);
  12.  
  13.  
  14. // moje zabezpieczenia
  15.  
  16. $account_check = str_replace("'","''",$account);
  17. $sprawdzenie = ereg("[^0-9a-zA-Z_-]", $account, $str);
  18. if ($account_check!=$account AND $sprawdzenie=1) { echo "<br>Don't try to hack beybe<br>"; $error=1; echo $str[0] ;}
  19.  
  20. $pass_check = str_replace("'","''",$password);
  21. $sprawdzenie = ereg("[^0-9a-zA-Z_-]", $password, $str);
  22. if ($pass_check!=$password AND $sprawdzenie=1) { echo "<br>Don't try to hack beybe<br>"; $error=1; echo $str[0]; }
  23.  
  24. $repass_check = str_replace("'","''",$repassword);
  25. $sprawdzenie = ereg("[^0-9a-zA-Z_-]", $password, $str);
  26. if ($repass_check!=$repassword AND $sprawdzenie=1) { echo "<br>Don't try to hack beybe<br>"; $error=1; echo $str[0] ;}
  27.  
  28. $squestion="yes";
  29. $sanswer = "no";
  30. $gender = "none";
  31. $country = "Earth";
  32.  
  33. $idcode = 00000000;
  34. $email = "not@need.com";
  35. $date = date('m/d/Y');
  36. // koniec zabezpieczen
  37. require("config.php");
  38. include("includes/validate.class.php");
  39.  
  40. $username_check = $db->Execute("SELECT memb___id FROM MEMB_INFO WHERE memb___id=?",array($account));
  41. $username_verify = $username_check->numrows();
  42.  
  43. $email_check = $db->Execute("SELECT mail_addr FROM MEMB_INFO WHERE mail_addr=?",array($email));
  44. $email_verify = $email_check->numrows();
  45.  
  46.  
  47.  
  48. $elems[] = array('name'=>'account','label'=>''.$warning_start.' Account ID Is Invalid (4-10 Alpha-Numeric Characters) '.$warning_end.'', 'type'=>'text','uname'=>'true', 'required'=>true, 'len_min'=>4,'len_max'=>10, 'cont' =>'alpha');
  49. $elems[] = array('name'=>'email', 'label'=>''.$warning_start.' Email Is Invalid (ex. sombody@yahoo.com MAX: 50) '.$warning_end.'', 'type'=>'text', 'required'=>true, 'len_max'=>50, 'cont' => 'email');
  50. $elems[] = array('name'=>'password', 'label'=>''.$warning_start.' Password Is Invalid (4-10 Alpha-Numeric Characters) '.$warning_end.'', 'type'=>'text', 'required'=>true, 'len_min'=>4,'len_max'=>10, 'cont' =>'alpha');
  51. $elems[] = array('name'=>'repassword', 'label'=>''.$warning_start.' Passwords Did not Match '.$warning_end.'','type'=>'text', 'required'=>true, 'len_min'=>4,'len_max'=>10, 'cont' =>'alpha','equal'=> array('password'));
  52. $elems[] = array('name'=>'question', 'label'=>''.$warning_start.' Secret Question Is Invalid (4-10 Alpha-Numeric Characters ( NO SPACES )) '.$warning_end.'','type'=>'text', 'required'=>true, 'len_max'=>'10', 'cont' =>'alpha');
  53. $elems[] = array('name'=>'answer', 'label'=>''.$warning_start.' Secret Answer Is Invalid (4-10 Alpha-Numeric Characters) '.$warning_end.'','type'=>'text', 'required'=>true, 'len_max'=>'10', 'cont' =>'alpha');
  54. $elems[] = array('name'=>'idcode','label'=>''.$warning_start.' Personal ID Code Is Invalid (12 Numeric Characters) '.$warning_end.'', 'type'=>'text','uname'=>'true', 'required'=>true, 'len_min'=>8,'len_max'=>8, 'cont' =>'digit');
  55.  
  56.  
  57. $f = new FormValidator($elems);
  58. $err = $f->validate($_POST);
  59.  
  60. if ( $err === true ) {
  61.  
  62. $valid = $f->getValidElems();
  63.  
  64. foreach ( $valid as $k => $v ) {
  65.  
  66. if ( $valid[$k][0][1] == false ) {
  67.  
  68. if ( empty($valid[$k][0][2]) ) {
  69.  
  70. show_error($valid[$k][0][2]);
  71. }else {
  72. show_error($valid[$k][0][2]);
  73. }
  74. }
  75. }
  76.  
  77. } else {
  78.  
  79.  
  80.  
  81.  
  82. //if ($_SESSION['image_random_value'] != md5($verifyinput2)){
  83. //$error= 1;
  84. //show_error("$warning_start Please Go Back And Write Code Correctly! $warning_end");
  85. // }
  86. if ($username_verify > 0){
  87. $error= 1;
  88. show_error("$warning_start Account Is Already In Use, Please Choose Another! $warning_end");
  89. }
  90.  
  91. if ($email_verify > 0){
  92. $error= 0;
  93. }
  94.  
  95.  
  96.  
  97. if ($error!=1){
  98.  
  99. if($muweb['md5'] == 1){
  100.  
  101. $insert_account = $db->Execute("INSERT INTO MEMB_INFO (memb___id,memb__pwd,memb_name,sno__numb,mail_addr,appl_days,modi_days,out__
    days
  102. ,true_days,mail_chek,bloc_code,ctl1_code,memb__pwd2,fpas_ques,fpas_answ,country,
    g
  103. ender) VALUES (?,[dbo].[fn_md5](?,?),'MuWeb',?,?,$date,$date,'2005-01-03','2005-01-03','1','0','0',?,?,?,?,?)",array($account,$password,$account,$idcode,$email,$password,$squestion,$sanswer,$country,$gender));
  104.  
  105. }
  106. elseif($muweb['md5'] == 0){
  107. $insert_account = $db->Execute("INSERT INTO MEMB_INFO (memb___id,memb__pwd,memb_name,sno__numb,mail_addr,appl_days,modi_days,out__
    days
  108. ,true_days,mail_chek,bloc_code,ctl1_code,memb__pwd2,fpas_ques,fpas_answ,country,
    g
  109. ender) VALUES (?,?,'MuWeb',?,?,$date,$date,'2005-01-03','2005-01-03','1','0','0',?,?,?,?,?)",array($account,$password,$idcode,$email,$password,$squestion,$sanswer,$country,$gender));
  110. $insert_account2 = $db->Execute("INSERT INTO VI_CURR_INFO (ends_days,chek_code,used_time,memb___id,memb_name,memb_guid,sno__numb,Bill_
    Sect
  111. ion,Bill_value,Bill_Hour,Surplus_Point,Surplus_Minute,Increase_Days )
  112. VALUES ('2005','1',1234,?,?,1,'7','6','3','6','6','2003-11-23 10:36:00','0' )", array($account,$account));
  113. }
  114.  
  115.  
  116.  
  117. show_error("$ok_start Your Account Has Been Created SuccesFully! $ok_end");
  118. }
  119.  
  120. }
  121.  
  122. }
  123.  


Ten post edytował rakoo 10.12.2009, 18:37:08
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 Wersja Lo-Fi Aktualny czas: 20.06.2025 - 05:36