• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ارسال فرم بدون اعتبار سنجی
#1
سلام

دوستان عزیز یک راهنمایی لطفا


یک دیتابیس داریم که نمودار اون به شکل زیر هست

[عکس: 5fm1_er4.png]

یک فرم هم داریم که مقادیر اون از این جداول خونده میشن و بعد از تکمیل کاربر ارسال میشه کد فرم به شرح زیر است

کد:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>


<form action="ser.php"  method="post">


select item :
<select name="tbl_a">
<option value="2">txt2</option>
<option value="4">txt4</option>
<option value="3">txt3</option>
</select>


<br><br>


select item :
<select name="tbl_b" >
<option value="4">str4</option>
<option value="3">str3</option>
<option value="1">str4</option>
</select>
<br><br>


enter count :
<input type="text" name="count" value="">


<br><br>
<input type="submit" value="send" name="" >




</form>
</body>
</html>

[عکس: zo4k_err.jpg]

کد سمت سرور به شرح زیر است

کد:
<?php


$aa=$_POST['tbl_a'];
$bb=$_POST['tbl_b'];
$cc=$_POST['count'];


if (isset($aa) && isset($bb) && isset($cc))
{
    
    $pdo=new PDO('mysql:host=localhost;dbname=azm;charset=utf8','root','') ;


    $sql=('insert into tbl_c (id_tblA,id_tblB,count) values(:a,:b,:c) ');
    
    $stmt=$pdo->prepare($sql);
    
    $stmt->execute(array(
                                ':a'=>intval($aa),
                                ':b'=>intval($bb),
                                ':c'=>intval($cc)
                        ));
    
    echo 'the number effect : '.$stmt->rowCount().'<br>';
    
    
}
?>

1- حالا سوال اگر ما در سمت سرور مقادیر ارسالی این فرم بدون اعتبارسنجی داخل دیتابیس Insert کنیم چه مشکلی پیش میاد ؟؟؟

2- اگر یک کاربر شیطون بیاد و مقادیر value کمبوباکس ها رو در مرورگر(سمت کاربر) تغییر بده و مقادیری که اصلا یا در جداول وجود نداره و یا اینکه بجای عدد کاراکتر جایگزین کنه و ارسال کنه چه مشکلی پیش میاد ؟؟
  پاسخ
تشکر شده توسط :
#2
حالا چرا میخوای اعتبار سنجی نکنیش ؟؟
  پاسخ
تشکر شده توسط :
#3
این مثال بود ، و برنامه اصلی یک وب اپلیکیشن هست و بصورت mvc
در برنامه اصلی در سمت کاربر ، اطلاعات ورودی مثل بالا از کاربر گرفته میشه ولی ارسال نمیشه ، بلکه بصورت یک رکورد در میاد و در تگ td مخفی در صفحه اضافه میشه و در آخر بعد از اینکه کل data entry توسط کاربر انجام شد با کلیک روی Send کلیه رکوردها توسط جاوااسکریپت از تگ td خونده میشه و در آخر به json تبدیل و بعد ارسال میشه

حالا اگر بخوام تک تک این ها رو اعتبارسنجی کنم زمان و حافظه و کدنویسی زیاد و ... پیش میاد
نظر خودم اینه اعتبارسنجی تو همچین سناریویی بی فایده است چون جدولی که قراره دیتا داخلش ثبت بشه فقط مقادیر عددی میگیره و کاربر اگر کد مخربی هم وارد کنه دیتابیس این اجازه رو بهش نمیده

ولی به هر حال هر سری یه فکری داره شاید چیزی باشه که من بهش برخورد نکرده باشم و باعث بروز مشکلات بعدی بشه واسه همین مطرح کردم
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان