کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش اعتبارسنجی فرم ها در PHP

آموزش اعتبارسنجی فرم ها در زبان PHP :

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

راهنمایی :

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

در این درس با تفکر کنترل و اعتبارسنجی اطلاعات ورودی توسط کاربر در فرم های وب کار خواهیم کرد. اعتبارسنجی درست اطلاعات وارد شده در فرم ها، بسیار مهم بوده و شما را از حمله هکرها و اسپمرها در امان نگه می دارد.
فرم HTML ای که در این درس ها از آن استفاده خواهیم کرد، به صورت زیر بوده و شامل چندین فیلد ورود اطلاعات مختلف می باشد. این فیلدها عبارتند از کادرهای متنی (text fields) اختیاری و اجباری، و کدهای انتخابی رادیویی (radio buttons) و یک دکمه ارسال اطلاعات (submit button) که خروجی آن بر روی صفحه به صورت زیر است :

Name: *

E-mail: *

Website:

Comment:

Gender: Female Male *

قوانین مربوط به اعتبارسنجی هر یک از کنترل های فرم فوق به صورت زیر است :

  • فیلد Name : این فیلد از نوع اجباری یا Required بوده و کاربر بایستی حتما آن را پر کند. علاوه بر این کاربر در این فیلد مجاز است فقط کاراکترهای حروفی و فاصله وارد نماید.
  • فیلد E-mail : این کادر اجباری بوده و بایستی شامل یک آدرس معتبر ایمیل با فرمت صحیح (با کاراکترهای @ و 0) باشد.
  • فیلد website : این کادر از نوع اختیاری (optional) بوده و کاربر می تواند آن را پر کرده یا خالی رها کند. این کادر متن هم بایستی شامل یک URL با فرمت صحیح باشد.
  • فیلد Comment : این فیلد نیز اختیاری بوده و به صورت کادر متن چند خطی (MnHi-line input) یا textarea می باشد.
  • فیلد Gender : این فیلد از نوع دکمه های رادیویی یا Radio Button بوده و کاربر بایستی حتما یکی از دو مورد را انتخاب کند، به عبارت دیگر اجباری است.

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

بررسی کادرهای متن فرم یا Text Fields :

کادر متن های name، email و website از نوع فیلد متن معمولی یا text input بوده و کادر متن Comment به صورت چند خطی یا textarea می باشد. کد HTML این کنترل ها به صورت زیر است :

 
            Name: 
            E-mail: 
            Website: 
            Comment: 
            

بررسی دکمه های انتخابی یا Radio Buttons :

فیلد Gender از نوع دکمه های رادیویی بوده و کد HTML آن به صورت زیر است :

 
Gender:
Female
Male
            

بررسی المنت فرم یا Form :

کد HTML فرم ورود اطلاعات به صورت زیر است :

< form method="post" action=" < ?php echo htmlspecialchars($_SERVER["PHP_SELF"]);? >">
            

هنگامی که فرم ارسال یا در اصطلاح submit می شود، اطلاعات آن به وسیله روش POST (با تعیین خاصیت “POST” = method) به سرور ارسال می شوند.

سوال :

متغیر سراسری ویژه $_SERVER[“PHP_SELF] یک متغیرvariable superglobal است که نام فایل اجراکننده اسکریپت جاری را بر می گرداند.
بنابراین، متغیر $_SERVER[“PHP_SELF] اطلاعات فرم را به خود صفحه جاری ارسال می کند تا این که به صفحه دیگری پرش نماید.در این حالت، کاربر خطاهای احتمالی یا error message های فرم را در همان صفحه ای که فرم قرار دارد، مشاهده خواهد کرد.

سوال :

تابع function htmlspecialchars() چیست و چه کاربردی دارد؟
تابع ) htmlspecialchars( ، کاراکترهای ویژه را به موجودیت های HTML تبدیل می کند. این کار بدین معناست که کاراکترهایی مثل > و < به صورت $h; و $gt درخواهند آمد. این تبدیل از جمله های تزریق کد درون فرم ها یا injecting HTML جلوگیری کرده و مانع از تخریب صفحه می شوند.

نکته مهم در مورد امنیت فرم در PHP :

متغیر $_SERVER[“PHP_SELF”] می تواند توسط هکرها استفاده شود.
اگر متغیر PHP_SELF در صفحه شما استفاده شود، کاربر می تواند یک اسلش یا (/) را در ابتدای یک کادر متن وارد نموده و سپس دستورات ؟؟؟؟؟؟؟ مخرب Cross site scripting یا XSS را جهت اجرا، وارد نماید.
آموزش : حملات Cross -site scripting یا XSS یک نوع آسیب پذیری امنیتی کامپیوتر است که به طور معمول در برنامه های تحت وب وجود دارد. XSS به حمله کننده ها این امکان را می دهد تا اسکریت های کلانیت ساید را به درون صفحات وب ای که توسط سایر کاربران نیز دیده می شود، تزریق کنند.
فرض کنید که تگ

در فایل وب “test_form.php” به صورت زیر باشد :

< form method="post" action=" < ?php echo $_SERVER["PHP_SELF"];? >">
            

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

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

کد حالت مناسب و مورد نظر ماست.
حال اگر کاربر، آدرس زیر را در URL صفحه وارد نماید :

 
www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C /script %3E
            

در این حالت، کد فوق به صورت زیر تبدیل خواهد شد :

 
< form method="post" action="test_form.php/" >< script >alert('hacked')< /script >
            

کد فوق یک تگ

1395/10/03 7531 16
نظرات شما

نظرات خود را ثبت کنید...