نمایش نتایج 1 تا 6 از 6

نام تاپیک: تامین امنیت در فرم ثبت نام

  1. #1

    تامین امنیت در فرم ثبت نام

    سلام خدمت دوستان و اساتید محترم

    برای تامین امنیت لازم برای فرم ثبت نام PHP که قرار است کاربر در آن نام کاربری ، رمز عبور و ایمیل و .... را وارد کند مطالبی را مطالعه کردم اما متاسفانه نتونستم به جمع بندی درستی برسم.

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

    توابع مختلفی وجود دارد که بنده را به هدف می رساندند اما نتوانستم ترکیبات درست را برای استفاده پیدا کنم.

    لطفا ترکیبات درست استفاده صحیح از توابع و فیلترهای مناسب را که بتواند امنیت فرم ثبت نام را تا حد مطلوبی فراهم کند معرفی کنید.

    با تشکر

  2. #2

    نقل قول: تامین امنیت در فرم ثبت نام

    مطالب دیگر که به ذهنم می رسد :


    1. باید نام کاربری و ایمیل در بانک اطلاعاتی جستجو شود تا کاربر نتواند از نام کاربری تکراری و ایمیل تکراری برای ثبت نام استفاده کند.
    2. فرمت نام کاربری باید بررسی شود تا کاربر نتواند از کاراکترهای خاص استفاده کند.
    3. باید ایمیل وارد شده از نظر فرمت صحیح نوشته شود.
    4. هر گونه فاصله (اسپیس) باید از نام کاربری و ایمیل حذف شود.
    5. رمز عبور باید با توابع مناسب کد شود. ( گویا اضافه کردن نمک یا نمک پاشی روش مناسبی برای این کار است).

  3. #3

    Question نقل قول: تامین امنیت در فرم ثبت نام

    گمان می کنم سوالم را خیلی کلی پرسیدم. بنظر دوستان امنیت این کد برای فرم ثبت نام چقدر مناسب است؟


    <?php
    session_start();

    // حذف بک اسلشهایی که به صورت خودکار توسط Magic Quotes به اطلاعات ارسال شده افزوده شده اند
    function UnEscape($string) {
    if (get_magic_quotes_gpc()) {
    return stripslashes($string);
    } else {
    return $string;
    }
    }

    $errors = array();
    $min_length = 4;
    $max_length = 20;
    $min_length_pass = 6;
    $max_length_pass = 20;

    // اجرای اسکرپت ثبت نام در صورتی که اطلاعات با متد پست به صفحه ارسال شده باشند
    if($_SERVER['REQUEST_METHOD'] == "POST") {
    $username = UnEscape($_POST['username']);
    $password = UnEscape($_POST['password']);
    $email = mysql_real_escape_string($_POST['email']);


    // چک کردن اطلاعات وارد شده توسط کاربر
    if(strlen($username) < $min_length) {
    $errors[] = "حداقل طول نام کاربری $min_length حرف است";
    }
    if(strlen($username) > $max_length) {
    $errors[] = "حداکثر طول نام کاربری $max_length حرف است";
    }
    if(strlen($password) < $min_length_pass) {
    $errors[] = "حداقل طول کلمه عبور $min_length حرف است";
    }
    if(strlen($password) > $max_length_pass) {
    $errors[] = "حداکثر طول کلمه عبور $max_length حرف است";
    }
    if($_POST['password'] !== $_POST['retype_pass']) {
    $errors[] = "کلمه عبور با تکرار کلمه عبور مطابقت ندارد";
    }

    if (empty($_POST["email"]))
    {$errors[] = "لطفا ایمیل خود را وارد کنید";}
    else
    {
    $email = ($_POST["email"]);
    // check if e-mail address syntax is valid
    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
    {
    $errors[] = "لطفا ایمیل خود را بصورت صحیح وارد کنید ";
    }
    }


    // وارد کردن اطلاعات کاربر در صورتی که اطلاعات معتبر باشند
    if(empty($errors)) {
    // اتصال به سرور
    mysql_connect('127.0.0.1', 'root', '') or die(mysql_error());
    // اتصال به دیتابیس
    mysql_select_db('myDB') or die(mysql_error());

    // اسکیپ کردن داده های وارد شده توسط کاربر
    $username = mysql_real_escape_string(htmlentities($username, ENT_QUOTES, 'UTF-8'));
    $password = mysql_real_escape_string($password);

    // به دست آوردن تعداد سطرهایی که نام کاربری مشابه نام کاربری انتخاب شده کاربر دارند
    list($count) = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM user WHERE username = '$username';"));

    if($count) {
    // قطع عملیات در صورتی که نام کاربری وارد شده قبلاً ثبت شده باشد
    mysql_close();
    $errors[] = "نام کاربری مورد نظر قبلاً ثبت شده است!";
    } else {
    // ثبت اطلاعات و ریدایرکت کردن کاربر برای جلوگیری از ارسال مجدد اطلاعات در صورت رفرش شدن صفحه
    mysql_query("INSERT INTO user SET username = '$username', email='$email', password = (SHA1(MD5($password)));") or die(mysql_error());
    mysql_close();

    $_SESSION['registeration_completed'] = true;

    header("Location: $_SERVER[PHP_SELF]");
    exit();
    }
    }
    }


    ?>

    <html>
    <head>
    </head>

    <body>

    <form id="form1" name="form1" method="post" action="<?php print $_SERVER['PHP_SELF'] ?>">

    <?php
    if(!empty($errors)) {
    echo "<ul>";
    foreach($errors as $error) {
    echo "<li>$error</li> \n";
    }
    echo "</ul>";
    } elseif (isset($_SESSION['registeration_completed'])){
    echo "<h3>ثبت نام شما با موفقیت انجام شد.</h3>";
    unset($_SESSION['registeration_completed']);
    }
    ?>
    <p>
    <label for="username">نام کاربری : </label>
    <input name="username" type="text" id="username" value="<?php echo UnEscape(isset($_POST['username'])); ?>" "maxlength="8" />

    <label for="email">ایمیل : </label>
    <input type="text" name="email" id="email" />

    <label for="password">رمز عبور : </label>
    <input type="password" name="password" id="password" />

    <label for="retype_pass">تکرار رمز عبور : </label>
    <input type="password" name="retype_pass" id="retype_pass" />


    <input name="sign-up" type="submit" value="ثبت نام" />

    </form>


    </body>
    </html>


  4. #4

    نقل قول: تامین امنیت در فرم ثبت نام

    سلام دوست عزیز. چرا از یه فریم ورک استفاده نمیکنید که اینقدر ذهنتون رو مشغول نوشتن صحیح کدها نکنید و درگیری ذهنی از بابت.امنیت کارایی پرفرومنس نداشته باشید؟ این فرمی که شما نوشتید ممکنه امنیت بالایی از نظر شما داشته باشه ولی از لحاظ فقط یه درصدی این امر تححق پیدا میکنه چون شما موارد بسیار زیاد دیگه رو ممکنه هیچ وقت بهش پی نبرید که اونها رو لحاظ کنید

  5. #5

    نقل قول: تامین امنیت در فرم ثبت نام

    نقل قول نوشته شده توسط tux-world مشاهده تاپیک
    سلام دوست عزیز. چرا از یه فریم ورک استفاده نمیکنید که اینقدر ذهنتون رو مشغول نوشتن صحیح کدها نکنید و درگیری ذهنی از بابت.امنیت کارایی پرفرومنس نداشته باشید؟ این فرمی که شما نوشتید ممکنه امنیت بالایی از نظر شما داشته باشه ولی از لحاظ فقط یه درصدی این امر تححق پیدا میکنه چون شما موارد بسیار زیاد دیگه رو ممکنه هیچ وقت بهش پی نبرید که اونها رو لحاظ کنید
    سلام خدمت شما

    با این حساب بنظر می رسد استفاده از فریم ورک ها اجناب نا پذریر است. درست است؟
    شما چه فریم ورکی را پیشنهاد می کنید؟

  6. #6
    کاربر دائمی آواتار godofphp
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    between 0 and 1
    پست
    792

    نقل قول: تامین امنیت در فرم ثبت نام

    من که با فریمورکها کار کردم بهترین و سریعترین و ایمن ترین فریمورک به نظر من Yii هست و همچنین فریمورک های زیاد دیکه ای که موجوده و توی همین انجمن وارد تالار PHP بشید فریمورکها رو میتونید ببینید

تاپیک های مشابه

  1. ساخت فرم ثبت نام
    نوشته شده توسط aliamel در بخش طراحی وب (Web Design)
    پاسخ: 2
    آخرین پست: سه شنبه 19 شهریور 1387, 13:37 عصر
  2. ساخت فرم ثبت نام در runtime
    نوشته شده توسط miladr در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: یک شنبه 01 اردیبهشت 1387, 16:06 عصر
  3. فروم با فرم ثبت نام خاص
    نوشته شده توسط iran400 در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: شنبه 19 اسفند 1385, 10:30 صبح
  4. مشکل در فرم ثبت نام با asp.net
    نوشته شده توسط mehdi_394 در بخش ASP.NET Web Forms
    پاسخ: 24
    آخرین پست: دوشنبه 23 آبان 1384, 22:55 عصر
  5. مشاهده پیش نمایش فرم ثبت نام
    نوشته شده توسط Chabok در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: یک شنبه 17 مهر 1384, 18:29 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •