نکتهء امنیتی مهم درمورد ریدایرکت کردن کاربر با هدر Location

مربوط به برنامه نویسی وب (نمونه کد در زبان PHP)

هرجا دستور ‎header(“location: target.php”)‎ رو میذارید، حتما بلافاصله در خط بعدش دستور exit هم بذارید.
header(“location: target.php”)‎ به مرورگر دستور میده که به آدرس مشخص شده بره، اما باید بدونید که 1) کلاینت میتونه از این دستور سرپیچی کنه و در همون صفحه بمونه (مثلا با دستکاری مرورگر یا با استفاده از نرم افزارهای امنیتی و هک) و هرگونه خروجی صفحه رو هم (درصورت وجود) دریافت کنه. 2) کدهای برنامهء شما حتی بعد از خط header(“location: target.php”)‎ همچنان اجرا میشن، مگر اینکه خودتون با شرط یا دستور exit/die جلوی اجرای بقیهء برنامه رو بگیرید.

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

یعنی چیزی که باید بدونید اینه که این هدر فقط دستوریست از جانب برنامهء شما به کلاینت، و دیگر هیچ!

یعنی از نظر امنیتی نمیشه مطمئن بود که کلاینت حتما از این دستور اطاعت میکنه؛ ممکنه اون رو نادیده بگیره یا بجاش به آدرس دیگری بره.
همچنین این دستور به تنهایی در اجرای بقیهء کدهای برنامهء شما در سمت سرور هم هیچ تاثیری نداره و تنها کارش اینه که یک خروجی رو بصورت هدر به کلاینت ارسال میکنه (دستور echo هم یک خروجی رو ارسال میکنه منتها بصورت هدر نه و بصورت محتوای صفحه).

بطور کلی همیشه گفتم که هیچوقت به کلاینت همینطوری اعتماد نکنید. کلاینت میتونه یک برنامهء هک و یک هکر پشتش باشه که لزوما نه از دستورات شما اطاعت میکنه و نه اطلاعاتی که به شما میفرسته چیزهای درست یا مورد انتظار شماست. اطلاعات ارسال شده میتونه جعلی یا محتوی کدهای خطرناک باشه. این اطلاعات حتی شامل محتوی کوکی ها هم میشه؛ همچنین یکسری هدرهای HTTP که از سمت کلاینت میان و در آرایهء ‎$_SERVER وجود دارن.

پاسخ دهید

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

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>