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:
function register()
{
// moje zabezpieczenia
$sprawdzenie = ereg("[^0-9a-zA-Z_-]", $account, $str); if ($account_check!=$account AND
$sprawdzenie=1
) { echo "<br>Don't try to hack beybe<br>"; $error=1; echo $str[0
] ;}
$sprawdzenie = ereg("[^0-9a-zA-Z_-]", $password, $str); if ($pass_check!=$password AND
$sprawdzenie=1
) { echo "<br>Don't try to hack beybe<br>"; $error=1; echo $str[0
]; }
$sprawdzenie = ereg("[^0-9a-zA-Z_-]", $password, $str); if ($repass_check!=$repassword AND
$sprawdzenie=1
) { echo "<br>Don't try to hack beybe<br>"; $error=1; echo $str[0
] ;}
$squestion="yes";
$sanswer = "no";
$gender = "none";
$country = "Earth";
$idcode = 00000000;
$email = "not@need.com";
// koniec zabezpieczen
require("config.php");
include("includes/validate.class.php");
$username_check = $db->Execute("SELECT memb___id FROM MEMB_INFO WHERE memb___id=?",array($account)); $username_verify = $username_check->numrows();
$email_check = $db->Execute("SELECT mail_addr FROM MEMB_INFO WHERE mail_addr=?",array($email)); $email_verify = $email_check->numrows();
$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'); $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'); $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'); $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')); $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'); $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'); $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');
$f = new FormValidator($elems);
$err = $f->validate($_POST);
if ( $err === true ) {
$valid = $f->getValidElems();
foreach ( $valid as $k => $v ) {
if ( $valid[$k][0][1] == false ) {
if ( empty($valid[$k][0
][2
]) ) {
show_error($valid[$k][0][2]);
}else {
show_error($valid[$k][0][2]);
}
}
}
} else {
//if ($_SESSION['image_random_value'] != md5($verifyinput2)){
//$error= 1;
//show_error("$warning_start Please Go Back And Write Code Correctly! $warning_end");
// }
if ($username_verify > 0){
$error= 1;
show_error("$warning_start Account Is Already In Use, Please Choose Another! $warning_end");
}
if ($email_verify > 0){
$error= 0;
}
if ($error!=1){
if($muweb['md5'] == 1){
$insert_account = $db->Execute("INSERT INTO MEMB_INFO (memb___id,memb__pwd,memb_name,sno__numb,mail_addr,appl_days,modi_days,out__
days
,true_days,mail_chek,bloc_code,ctl1_code,memb__pwd2,fpas_ques,fpas_answ,country,
g
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));
}
elseif($muweb['md5'] == 0){
$insert_account = $db->Execute("INSERT INTO MEMB_INFO (memb___id,memb__pwd,memb_name,sno__numb,mail_addr,appl_days,modi_days,out__
days
,true_days,mail_chek,bloc_code,ctl1_code,memb__pwd2,fpas_ques,fpas_answ,country,
g
ender) VALUES (?,?,'MuWeb',?,?,$date,$date,'2005-01-03','2005-01-03','1','0','0',?,?,?,?,?)",array($account,$password,$idcode,$email,$password,$squestion,$sanswer,$country,$gender)); $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
ion,Bill_value,Bill_Hour,Surplus_Point,Surplus_Minute,Increase_Days )
VALUES ('2005','1',1234,?,?,1,'7','6','3','6','6','2003-11-23 10:36:00','0' )", array($account,$account)); }
show_error("$ok_start Your Account Has Been Created SuccesFully! $ok_end");
}
}
}
Ten post edytował rakoo 10.12.2009, 18:37:08