دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۳
  • آذر

جلسه ۱۲ : فرم اعتبار سنجی ورودی ها

  • دسته‌بندی‌ها :
جلسه ۱۲ : فرم اعتبار سنجی ورودی ها
    • جزئیات
    • نوع محتواآموزش تصویری

      بار عرض سلام خدمت کاربران محترم سایت پی وی لرن. در این جلسه از سری جلسات کار با فرم ها در php به مبحث مهم اعتبار سنجی فرم ها در php می پردازیم. با ما همراه باشید.

      اعتبار سنجی فرم ها یا Validation of forms امروزه یکی از اساسی ترین اقدامات برای امنیت وب سایت و جلوگیری از خرابکاری می باشد.

       

      فرم HTML ای که ما در این جلسه با آن کار خواهیم کرد، شامل فیلد های ورودی مختلفی از جمله فیلد های متنی اخیاری یا ضروری، radio buttons و دکمه ارسال خواهد شد.

      php form validation

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

      توضیحاتفیلد
      ضروری – فقط شامل حروف و جای خالی باشدName
      ضروری – باید شامل یک آدرس ایمیل معتبر باشد(با @ و . )E-mail
      اختیاری – اگر وارد شد باید شامل یک URL معتبر باشدWebsite
      اختیاری – فیلد متنی چند خطی (textarea)Comment
      ضروری – فقط یکی انتخاب شودGener

       

      ابتدا نگاهی به کد HTML فرم خواهیم انداخت.

      فیلد های متنی (Text Fields)

      نام، ایمیل و وب سایت المان های ورودی متن هستند و فیلد نظر یک textarea هست. کد HTML به صورت زیر می باشد

      مثال : 

      Radio Buttons

      فیلد جنسیت شامل radio button هست که کد HTML آن به صورت زیر می باشد

      مثال : 

      المان فرم

      کد HTML فرم بالا به صورت زیر می باشد

      مثال : 

      اطلاعات فرم با متد POST ارسال خواهند شد.

      متغیر SERVER[“PHP_SELF”]_$ چیست؟

      SERVER[“PHP_SELF”]_$ یک متغیر superglobal هست نام فایل اسکریپت فعلی را بر می گرداند.

      بنابراین SERVER[“PHP_SELF”]_$ داده های ارسالی را به جای رفتن به یک صفحه دیگر به داخل خود صفحه ارسال می کند.
      بدین ترتیب کاربر پیغام های خطای ناشی از فرم را در همان صفحه فرم دریافت می کند.

      تابع ()htmlspecialchars چه کاری انجام می دهد؟

      این تابع کاراکتر های خاصی را به اجزای HTML تبدیل می کند. این بدان معنی است کاراکتر های HTML مثل < و > با ;lt& و ;gt& جایگزین می کند. این کار از حملات هکر ها از طریق تزریق (injecting) کدهای HTML و javascript به داخل فرم ها جلو گیری می کند. برای آشنایی بیشتر در مورد حملات Cross-site scripting یا به اختصار XSS جستجو نمایید

       

      یک نکته مهم در ارتباط با امنیت فرم در PHP

      متغیر SERVER[“PHP_SELF”]_$ می تواند توسط هکر ها مورد استفاده قرار گیرد!

      اگر PHP_SELF در صفحه شما به کار رفته باشد، کاربر می تواند با وارد کردن اسلش ‘/’ تعدادی از دستورات XSS را اجرا کند.

      فرض کنید با یک فرم در صفحه ای به نام “test_form.php” به صورت زیر داشته باشیم:

      مثال : 

      حال اگر یک کاربر یک URL معمولی مانند “http://www.example.com/test_form.php” را در نوار آدرس وارد کند، کد بالا به صورت زیر تبدیل خواهد شد:

      مثال : 

      تا الان که خوب بوده.

      اما در نظر بگیرید که کاربر URL زیر را در نوار آدرس وارد کند:

      مثال : 

      اینبار کد مذکور به صورت زیر تبدیل خواهد شد:

      مثال : 

      این کد یک تگ اسکریپت و یک دستور alert را اجرا می کند. و وقتی صفحه بارگذاری می شود، کد جاوا اسکریپت اجرا خواهد شد (کاربر یک alert box مشاهده می کند).
      این فقط یک مثال ساده و بی خطر بود تا نشان دهد متغیر PHP_SELF چطور میتواند خطرآفرین باشد.

      آگاه باشید که هر کد جاوا اسکریپت می تواند داخل تگ <script> اضافه شود! یک هکر می تواند کاربر را به یک فایل روی سرور دیگری هدایت کند و این فایل می تواند یک کد مخرب داشته باشد که می تواند متغیر های سراسری را تغییر دهد و یا فرم را به یک آدرس دیگری هدایت کند تا اطلاعات کاربر را ذخیره کند.

      برای جلوگیری از این تهدید کافیست تا از تابع ()htmlspecialchars استفاده نمایید.

       

      اعتبار سنجی اطلاعات فرم در PHP

      وقتی که کاربر فرم را ارسال می کند ما دو کار انجام می دهیم:

      • کاراکتر های غیر ضروری (space های اضافی، tab و newline) را با استفاده از تابع ()trim حذف می کنیم.
      • بک اسلش ها را با استفاده از تایع ()stripslashes از داده های کاربر حذف می کنیم.

      در قدم بعدی یک تابع ایجاد می کنیم تا تمام کارهای بررسی برایمان انجام دهد. نام این تابع را ()test_input خواهیم گداشت.

      حالا ما تمام متغیر های POST_$ را با تابع ()test_input می توانیم بررسی کنیم. کد به صورت زیر خواهد بود:

      مثال : 

      توجه داشته باشید که ما ابتدا با استفاده از SERVER[“REQUEST_METHOD”]_$ چک می کنیم که فرم با چه متدی ارسال شده است. اگر متد درخواستی POST باشد، فرم ارسال می شود و باید اعتبارسنجی شود.

      خب جلسه اعتبار سنجی ورودی ها در php و امنیت در php نیز به پایان رسید. در جلسه بعد راجع به ایجاد پیام های خطا برای فیلد های ضروری (اگر لازم بود) خواهیم پرداخت. با پی وی لرن همراه باشید.

      همچنین می توانید نظرات و سوالات خود را از طریق بخش نظرات با ما در میان بگذارید.

      QR:  جلسه ۱۲ : فرم اعتبار سنجی ورودی ها
      به اشتراک بگذارید


      دیدگاه کاربران
      1. تصویر کاربر