PDA

View Full Version : سوال: این کد ثبت نام باگ امنیتی داره؟



saeed-71
سه شنبه 19 آذر 1392, 17:29 عصر
سلام.
این کد ثبت نام باگ امنیتی داره؟


<?php require_once('funcs/config.php');?>
<?php
if(isset($_POST['submit']))
{

$mobile=filter_var($_POST['mobile'],FILTER_SANITIZE_STRING);
$name=filter_var($_POST['name'],FILTER_SANITIZE_STRING);
$ostan=filter_var($_POST['ostan'],FILTER_SANITIZE_STRING);
$email=filter_var($_POST['email'],FILTER_SANITIZE_STRING);
$ramz=filter_var($_POST['ramz'],FILTER_SANITIZE_STRING);
$ramz1=filter_var($_POST['ramz1'],FILTER_SANITIZE_STRING);
$ip=$_SERVER['REMOTE_ADDR'];
$ok=false;

if($ramz!=$ramz1){$_SESSION['eror']='رمز های وارد شده با هم مطابقت ندارند.';}
else{

if(!preg_match('/^09[123]\d{8}$/', $_POST['mobile'])) {
$_SESSION['eror']="فرمت شماره موبایل وارد شده صحیح نمیباشد.";
}
else{
$sql = "INSERT INTO user (mobile,name,ostan,email,date,ip,ramz) VALUES (:mobile, :name,:ostan,:email,now(),:ip,:ramz)";
$stmt = $db->prepare($sql);
$stmt->execute(array(
":mobile"=>$mobile,
":name"=>$name,
":ostan"=>$ostan,
":email"=>$email,
":ip"=>$ip,
":ramz"=>$ramz,
));
$ok=$stmt->rowCount();
if($ok){$_SESSION['eror']='<span style="color:green">ثبت نام شما با موفقیت انجام شد</span>.';}
else{$_SESSION['eror']='<span style="color:red">ثبت نام انجام نشد.</span>.';}
}
}

}
?>

MRmoon
سه شنبه 19 آذر 1392, 18:24 عصر
نه باگ sql Injection که دیده نمیشه...

فقط شماره موبایل تکراری و نام تکراری تو دیتابیس می تونه وارد شه.

saeed-71
سه شنبه 19 آذر 1392, 20:08 عصر
شماره موبایل تکراری ثبت نمیشه چون تو دیتا بیس فیلد index رو unique گذاشتم.
فقط نمیدونم چرا وقتی با pdo اینزرت میکنم حروف فارسی بهم ریخته و نا خوانا هستن.کرست یو تی اف 8 هم گذاشتم اما اثری نداشت!

MRmoon
سه شنبه 19 آذر 1392, 20:17 عصر
ببخشید ولی بهتر نیست به جای اینکه کاربر رو با ارور دیتابیس مواجه کنید یه ارور فارسی بهش بدید؟؟؟؟ مثلا 'شماره موبایل موجود است'؟؟؟

کد اتصال به PDO رو بگذارید.

saeed-71
سه شنبه 19 آذر 1392, 20:44 عصر
<?php
$db = new PDO('mysql:host=localhost; dbname=hyto; charset=UTF8', 'root', '');
// ?>