امنیت فرمها در PHP

PHP_SELF می تواند توسط هکرها مورد استفاده قرار گیرد.

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

Note

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

دلیل به وجود آمدن این آسیب پذیری عدم اعتبارسنجی ورودی‌های کاربر می‏ باشد، و مهاجم می تواند با تزریق اسکریپت‌های مخرب در سایت از این آسیب پذیری سو استفاده کند.

فرض کنید، فرم زیر را در یک فایل بنام "test_form.php" داریم:

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

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

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

خوب تا اینجا همه چیز خوب است.

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

http://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>

دومین URL، باعث اضافه شدن تگ <script> و یک دستور alert در بین کدهای ما شده است. و زمانی که صفحه لود می شود، کد JavaScript اجرا می شود (کاربر یک جعبه پیغام خواهد دید). این فقط یک مثال ساده و بی ضرر است که نحوه هک کردن متغییر PHP_SELF را نشان می دهد.

توجه داشته باشید که هر کد JavaScript دیگری را می توان در تگ <script> قرار داد...! یک هکر می تواند کاربر را به یک فایل دیگر روی سروری دیگر redirect کند، و از طریق آن فایل، اطلاعات کاربر را ذخیره کند.


آموزش های مرتبط

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