رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
کاربرد hidden input
#1
سلام و خسته نباشید
دوستان کاربرد فیلد های مخفی بجز برای جلوگیری از csrf در فرم ها چی هست؟
لطفا مثال هم بزنید
ممنون
پاسخ
تشکر شده توسط:
#2
بطور خلاصه، باید یک مقدار تصادفی تولید کنید و توی سشن سمت سرور ذخیره کنید. همون مقدار رو هم داخل فرم بگذارین (این مقدار در هربار نمایش فرم باید تغییر کنه). حالا در صفحه مقصد فرم، مقداری که توسط فرم بصورت مخفی ارسال شده رو با مقدار مخفی که خودتون توی سشن دارین چک کنید و اگه برابر بود، فرم رو پردازش کنین.
پاسخ
تشکر شده توسط: pars0076
#3
مثال:
<?php
session_start();
$token = md5(time() . 'private_key' . uniqid());
$_SESSION['token'] = $token;
?>
<form action="result.php" method="post">
    <input name="CSRF_TOKEN" type="hidden" value="<?= $token ?>" />
    ...
</form>

توی صفحه مقصد هم اینطوری چک میکنید:
<?php
session_start();
if(isset($_POST['CSRF_TOKEN']) && $_POST['CSRF_TOKEN'] === $_SESSION['token']) {
    // process form here
}
پاسخ
تشکر شده توسط: pars0076
#4
ممنون
اما آیا جز کاربرد امنیتی کاربرد دیگه هم داره (بالا گفته بودم بجز csrf)
پاسخ
تشکر شده توسط:
#5
کاربردهای دیگه هم میشه درنظر گرفت. برای مثال توی صفحه مقصد فرم وقتی صفحه Refresh میشه فرم دوباره پردازش میشه. میتونین برای جلوگیری از این مشکل، توی فرم یک کلید مخفی بگذارین با مقدار تصادفی و توی سشن هم ذخیره کنین. موقع پردازش فرم اول مقدار ارسالی ازطریق فرم رو با مقدار داخل سشن چک کنید و اگه برابر بودن، فرم رو پردازش کنید و مقدار داخل سشن رو هم دوباره با یه مقدار تصادفی دیگه تنظیم کنید. اینطوری اگه صفحه مقصد فرم Refresh بشه، کلیدی که توی سشن هست دیگه با مقداری که ازطریق فرم سابمیت میشه یکسان نیست و فرم پردازش نمیشه.
پاسخ
تشکر شده توسط: pars0076




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