تماس با ما

موبایل: 2565 038 0912

دفتر تهران: 2565 2842 021

دفتر گرگان: 2565 3233 017


راهکار های کار با فرم ها در PHP- قسمت چهل و دوم

بخش سوم : اعتبار سنجی اطلاعات ورودی کاربران در فرم های وب PHP
مقدمه :
در مرحله قبل به آموزش روش کنترل کردن تعیین اطلاعات در فیلدهای اجباری فرم پرداختیم تا کاربر آنها را خالی رها نکند .
اما در این بخش قصد داریم تا ماهیت اطلاعاتی که کاربر وارد می کند را اعتبار سنجی کرده و ببینیم آیا طبق استاندارهای مورد نظر ما هستند یا خیر .
برای مثال در فرم این راهکار ، دو کادر متنی داریم که کاربر در کادر اول بایستی آدرس ایمیل و در کادر دوم آدرس وب سایت خود را وارد نماید . هدف ما طراحی کدهایی است که مقادیر وارد شده در این دو فیلد را بررسی کرده و ببیند آیا با فرمت معمول یک آدرس ایمیل و یک آدرس سایت سازگار هستند یا خیر .
در صورت صحیح بودن داده های ورودی ، فرم امکان ارسال اطلاعات به مقصد را می دهد ، در غیر اینصورت پیام های خطای لازم جهت اصلاح مقادیر ورودی را به کاربر نمایش می دهد .
راهنمایی : اینکه گفتیم می خواهیم بررسی کنیم آیا ایمیل وارد شده دارای فرمت صحیح است ، یعنی اینکه مثلا کاربر ایمیل را به صورت شکل کلی آن یعنی ( abc@doamain.xyz ) , وارد کرده باشد نه هر فرمت غیر متعارف دیگری مثل ( abc@domain ) و یا صرفا اعداد و حروف بی معنی . ولی نمی توانیم تشخیص دهیم ، آیا ایمیل واقعی کاربر است یا خیر .
آشنایی با فرم HTML ثبت اطلاعات و فیلدهای آن :
فرم مثال زیر ، یک فرم ساده HTML را برای دریافت اطلاعات از کاربر نمایش می دهد . این فرم از چندین کنترل Input ، برای وارد نمودن متن ، یک دکمه انتخابی و یک دکمه برای ارسال یا Submit فرم به شرح زیر است :
    Name : این فیلد اجباری بوده و برای دریافت نام کاربر استفاده می شود . فقط می تواند شامل حروف و فاصله خالی باشد .
    Email : این فیلد نیز اجباری بوده و برای دریافت ایمیل کاربر به کار می رود . فقط می تواند شامل حروف و اعداد ، به همراه یک کاراکتر @ و باشد .
    Website : این فیلد اختیاری بوده و برای دریافت آدرس سایت کاربر استفاده می شود . اگر پر شود ، بایستی حاوی یک آدرس صحیح اینترنتی باشد .
    Comment : این فیلد نیز اختیاری بوده و فقط می تواند برای دریافت نظر کاربر استفاده شود .
    Gender : انتخاب این گزینه اجباری بوده و کاربر بایستی یکی از دو نوع جنسیت را انتخاب کند .
در ادامه به بررسی کد HTML فرم خواهیم پرداخت .
بررسی کد HTML فرم :
کد کادرهای متن ( Text Fielsd ) :
کادرهای name ، email و وب سایت Website ، کادرهای متن معمولی input بوده و کادر Comment یک کادر متن بزرگ textarea است . کد آنها در فرم به صورت زیر است :


Name: <input type="text" name="name">
E-mail: <input type="text" name="email">
Website: <input type="text" name="website">
Comment: <textarea name="comment" rows="5" cols="40"></textarea> 


 کد کادرهای انتخابی ( Radio Buttons ) :
کادر انتخابی جهت تعیین جنسیت کاربر ( مرد یا زن ) ، یک کنترل رادیویی به صورت زیر است :


Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male 


 کد تگ فرم Form Element :
کد تگ فرم که وظیفه ارسال اطلاعات را بر عهده دارد ، به صورت زیر است :


<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
...
محتویات
...
</form> 


 هنگامی که فرم ارسال یا submit می شود ، اطلاعات موجود در آن از طریق متد POST ارسال می شوند . در نهایت خروجی فرم به صورت زیر است :

  بررسی نکات مهم کد فرم :
نکته 1 : متغیر ["SERVER["PHP_SELF_$ چیست ؟ :
متغیر ["SERVER["PHP_SELF_$ ، یک سراسری ( superglobal ) است که نام فایل اجرا کننده کد یا اسکریپت جاری را بر می گرداند .
بنابراین این متغیر ، در هنگام ارسال فرم ، اطلاعات آن را به خود صفحه جاری ( به جای ارسال به صفحه دیگری ) می فرستد . در این حالت ، اطلاعات فرم در همان صفحه پردازش شده و می توان چنانچه اطلاعات دارای اشکال باشند ، در همان صفحه پیام های خطا را به وی نمایش داد .
نکته 2 : تابع ( ) htmlspecialchars چیست ؟ :
تابع ( ) htmlspecialchars ، کاراکترهای خاص HTML موجود در کادرهای متن فرم را به معادل آنها در زیان HTML تبدیل می کند . برای مثال ، اگر کاربر کاراکترهای > و < را در کادرهای متن وارد نماید ، پس از تبدیل به صورت ;lt& یا ;gt& در می آیند . این کار از حملات اسکریپتی در فرم ها جلوگیری می کند .
برای دریافت لیست کامل کاراکترهای خاص HTML به بخش آموزش کاراکترهای خاص HTML بروید .
نکته امنیتی مهم در مورد فرم HTML مورد استفاده :
متغیر ["SERVER["PHP_SELF_$ ، به راحتی توسط هکرها می تواند مورد استفاده قرار گیرد .
اگر متغیر اشاره گر PHP_SELF که به صفحه جاری اشاره دارد ، در صفحه مورد استفاده قرار بگیرد ، یک هکر می تواند با قرار دادن کاراکتر / و سپس نوشتن کدهای حملات اسکریپتی ( XSS ) ، دستورات خطرناکی را برای اجرا به سرور شما ارسال کند .
برای مثال فرض کنید که همانند مثال فرم این راهکار ، کد فرم به صورت زیر باشد :

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


 اگر کاربر یک آدرس معمولی مثل "http://www.example.com/test_form.php" را در نوار ابزار تایپ کرده و اجرا نماید ، کد بالا به صورت زیر ترجمه می شود ، که مشکل یا خطری ندارد :

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


 اما اگر یک کد حمله اسکریپتی را به صورت زیر وارد نماید :

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


 این کد در هنگام اجرا به صورت زیر ترجمه شده که حاوی یک اسکریپت بوده و پیام هشداری ( alert ( ) ) با محتوای اینکه شما هک شده اید را به کاربر نشان می دهد :

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


 توجه داشته باشید که در این گونه موارد ، هر نوع دستور اسکریپتی به راحتی از طریق اشاره گر PHP_SELF ، می تواند به صفحه ارسال شود .
برای مثال هکر می تواند باعث ارجاع ( redirect ) شدن کاربر به صفحه دیگری که حاوی اسکریپت مورد نظرش است شده یا حتی اطلاعات فرم را بدزدد .
نحوه پیشگیری از حملات اسکریپتی :
حملات اسکریپتی از طریق اشاره گر PHP_SELF یا سایر توابع و متغیرهای صفحه ، همانطور که در بخش قبل اشاره کردیم ، با استفاده از تابع ( ) htmlspecialchars قابل پیشگیری است .
در واقع کد فرم مثال قبل را بایستی با تابع ( ) htmlspecialchars به صورت زیر بازنویسی کنیم :

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


 تابع ( ) htmlspecialchars ، کاراکترهای خاص در HTML را به معادل حروفی آن تبدیل کرده و باعث می شود تا مثلا مد حمله اسکریپتی مثال قبل به صورت زیر ترجمه و ارسال شود که به دلیل تغییر ماهیت ، اجرا نشده و آسیبی نمی تواند به سیستم وارد نماید :

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

منبع خبر


سفارش طراحی سایت

سفارش طراحی سایت

google
yahoo
alexa
ebook
Baidu.com
Wikipedia
Blogger.com
Windows Live
Amazon.com
eBay
Bing
Ask
استانداری گلستان
f shdj, sefaresh, sefaresh .net, sefaresh.net, sthva, sthva nhj kj, sthva.kj, stthva.kj, xvhpd, آیفون, استفاده, اندروید, اپل, اپلیکیشن, اینترنت, باتری, بازار, خواهد, دستگاه, دوربین, سامسونگ, سفارش, سفارش دات نت, سفارش دات نت sefaresh.net, سفارش.نت, سیستم, طراح وب, طراحي وب سايت, طراحی, طراحی وب سایت, فناوری, مایکروسافت, موبایل, هوشمند, کاربران, کمپانی, گلکسی, گوشی, گوشی هوشمند, گوگل

نمایش تمامی تگ ها
بسته ویژه مدارس مدارس
بسته ویژه پزشکان پزشکان
بسته ویژه مهندسین مهندسین