آموزش PHP

اعتبار سنجی فرم در php

در این مطلب از مجله آموزش تبلیغات و بازاریابی به موضوع اعتبار سنجی فرم در php میپردازیم که در دسته مطالب آموزش PHP قرا میگیرد.

سرفصل‌های پست

آموزش طراحی سایت با PHP – اعتبارسنجی فرم در php

درود به همراهان گرامی آموزش تبلیغات و بازاریابی . با یک جلسه دیگه از آموزش طراحی سایت با پی اچ پی کنار شما عزیزان هستم. در جلسه گذشته از آموزش PHP به نحوه جمع آوری اطلاعات از طریق  متد POST و GET در PHP پرداختیم . در این جلسه با اعتبارسنجی فرم در php آشنا خواهیم شد.

 

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

در زمان پردازش فرم امنیت را نیز در نظر بگیرید . اعتبارسنجی فرم به منظور جلوگیری از حمله‌ی هکرها و اسپم کنندگان بسیار حائز اهمیت می‌باشد. در این جلسه فرم html را مورد بررسی قرار خواهیم داد که شامل فیلد های مختلفی می باشد. از جمله :  فیلدهای متنی الزامی و اختیاری، دکمه های رادیویی و یک دکمه ارسال

اعتبارسنجی فرم در php
اعتبارسنجی فرم در php

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

مشروح آن ها را در جدول زیر خواهید دید.

نام فیلد اعتبارسنجی 
نام الزامی است. فقط حروف الفبا و خط فاصله را می پذیرد
ایمیل الزامی است. باید  حاوی فرمت صحیح ایمیل باشد (به همراه علامت @ و .)
وب سایت اختیاری است. در صورتی که پر شود باید فرمت url داشته باشد.
نظرات اختیاری است. می تواند شامل چندین خط متن باشد.
جنسیت الزامی است. یکی از موارد می تواند انتخاب شود.

 

در فرم بالا درصورتی که فیلدهای اجباری را خالی رها کنید، با خطای فیلد اجباری است روبرو خواهید شد .

یا اگر هر قانون را رعایت نکنید با پیغام خطای آن مواجه خواهید شد.

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

 

فیلدهای متنی

فیلد نام ، ایمیل و وب سایت از نوع text و فیلد نظرات textarea می باشد.

نام: 
 ایمیل: 
 وب سایت: 
 نظرات: 

دکمه های رادیویی

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

جنسیت:
زن
مرد

عنصر فرم

کد html فرم به شکل زیر است :

">

زمانی که فرم ارسال می شود از طریق متد پست اطلاعات جمع آوری می شود. برای کسب اطلاعات بیشتر درباره متغیر سوپرگلوبال SERVER_$ به بخش متغیر superglobal در php مراجعه کنید.

 

htmlspecialchars چه کاری می کند؟

با استفاده از تابع ()htmlspecialchars، می توان کاراکترهای خاص را به HTML entity تبدیل کرد . به این معنا که کاراکترهایی مثل علامت کوچکتر (<) و بزرگتر (>) در پارامتر ورودی را به ;lt$ و ;gt$ تبدیل می نماید .

این تابع می تواند از حمله ی هکرهایی که می خواهند از طریق تزریق کدهای HTML یا JavaScript اختلال ایجاد کنند ، جلوگیری کند.

تذکر مهم در امنیت فرم در php

در مثال بالا از PHP_SELF استفاده کردیم . این دستور می‌تواند مورد استفاده ی هکر ها قرار بگیرد . هکرها  می‌توانند در آدرس بار مرورگر بعد از آدرس فایل، یک اسلش (/) قرار دهند و سپس دستورات XSS را برای اجرا تایپ کنند.

اما دستورات XSS چی هستند؟

 

دستورات XSS

دستورات Cross-site scripting که به اختصار XSS نیز نامیده می شوند یک نوع قابلیت آسیب پذیری امنیت کامپیوتر است که معمولا در برنامه های کامپیوتری تحت وب دیده می شود. هکرها می توانند با تزریق اسکریپت های سمت کاربر به اطلاعات دستبرد بزند .

برای درک بهتر به مثال پایین توجه کنید.

در نظر بگیرید که فایلی با نام test_form.php حاوی دستورات زیر است :

">

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

تا به اینجا همه چیز خوب پیش رفته است . اما تصور کنید کاربری آدرس زیر را تایپ کند :

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

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

دومین URL ، سبب اضافه شدن تگ

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

;lt;script>location.href('http://www.hacked.com')

حالا این کد برای استفاده در صفحات و یا داخل ایمیل امن خواهد بود .

همچنین ما برای افزایش امنیت از دو مورد زیر نیز استفاده کرده ایم :

 

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

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

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

HTML>  



  



Mizfa.com Form Validation Example

">     Name:    

  E-mail:    

  Website:    

  Comment:    

  Gender:   Female   Male   

     Your Input:"; echo $name; echo "
"; echo $email; echo "
"; echo $website; echo "
"; echo $comment; echo "
"; echo $gender; ?>

خروجی به شکل زیر است :

اعتبارسنجی فرم در php
اعتبارسنجی فرم در php

پی اچ پی آموزان عزیز امیدوارم این قسمت براتون مفید واقع بشه . در جلسات آینده به سری پست های کنترل فرم در php می پردازیم . در صورت وجود انتقاد ، پیشنهاد ، و نظرات خود ما رو در جریان بگذارید.

منبع : w3schools

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا