-
September 5th, 2016, 10:42
#1
تابع ob_start در php امنه؟
سلام
من برای استفاده از تابع header به مشکل خوردم و تنها راه حلی که جواب داد استفاده از تابع ob_start بود . حالا از نظر امنیتی این تابع چون جلو اجرای خط به خط php رو میگیره و از بافل استفاده میکنه امنتره یا اینکه نه مشکل امنیتی داره؟ من بنظرم امنتر میاد درسته؟
با تشکر از همکاریتون
-
-
September 5th, 2016 10:42
# ADS
-
September 5th, 2016, 11:00
#2
پاسخ : تابع ob_start در php امنه؟
سلام
به نظر من اگه یکم بیشتر تو کد هاتون فکر کنید احتمالاً راه منطقی تری برای ارسال header ها قبل از خروجی html به کاربر پیدا میکنید که نیازی به ob_start هم نباشه اما در شرایط خاصی که واقعاً راه حداقل آسونی برای این کار وجود نداره ob_start برای همین ساخته شده.فکر نکنم مشکل امنیتی هم داشته باشه چون حتی تو PHP 7 هم این تابع وجود داره.
-
تعداد تشکر ها از iHSG به دلیل پست مفید
-
September 5th, 2016, 12:35
#3
پاسخ : تابع ob_start در php امنه؟
یک کم بیشتر تو نت تحقیق کردم یه جایی یه نکته رو دیدم که پیش بینی هام رو تایید کرد..استفاده از این تابع باعث افزایش امنیته البته برای کسایی که حواس پرتن...نوشته رو میزارم بقیه استفاده کنن
ه خاطره تلخ هم در مورد رعایت یه مسئله امنیتی بگم براتون, من تو یه پروژه ای برای Session صفحه مدیر از headerاستفاده کرده بودم که اگه سشن درست نبود به صفحه خروج ریدایرکت بشه! کاری که همه می کنند,
کد PHP:
if(!isset($_SESSION['secret']))
{
header(“location: logout.php”);
……….
(تو پست بعدی یه سری مسائل امنیتی در مورد ورود امنت تر و استفاده همزمان از Session و کوکی هامی نویسم)
خوب طبق بالا اگه کسی مستقیم وارد صفحه مدیر میشد ولی لاگین نکرده بود صفحه منتقل میشد! بعد دیدم یکی از دوستام ایمیل زده می خنده می گه من بدون لاگین وارد صفحه میشم!!
بعد که بررسی کردم دیدم فایل کانفیگ با Notepad ویندوز ویرایش شده بود و غیر استاندارد ذخیره شده بود و به اصطلاح دارای BOM شده بود یعنی خروجی HTML یه کارکتر خالی میفرستاد و این یعنی ارسال header !! برای همین header دوم ارسال نمیشد و هر کسی میتونست تو ادمین واسه خودش دور بزنه راه حلش هم ساده هست استفاده از تابع exit(); !
وقتی ما از تابع headerاستفاده می کنیم یعنی با ادامه کد کاری نداریم پس برنامه رو exit میکنیم که اگه سهوا هیدر ارسال نشد لا اقل دسترس هم نداشته باشند! مثل :
کد PHP:
if(!isset($_SESSION['secret']))
{
header(“location: logout.php”);
exit();
…
ویرایش توسط vahid13713 : September 5th, 2016 در ساعت 12:36
-
-
September 5th, 2016, 13:15
#4
عضو دائم
پاسخ : تابع ob_start در php امنه؟
سلام، کلا با تابع هایی که دارای callback هستند میتوان سو استفاده هایی کرد، با اینکه ob_start هم callback میگیرد اما مشکل تابع های callback دا را برای ساخت بک دور ندارد اما دیده شده بعضی میزبانی ها کل تابع هایی که callback میگیرند را بسته اند که ob_start جز این دسته حساب میشود.
-
تعداد تشکر ها از T.Toosi به دلیل پست مفید
-
September 6th, 2016, 00:46
#5
پاسخ : تابع ob_start در php امنه؟
دوست عزیز نحوه استفاده از تابع مهمه وگرنه اگر این تابع امن نبد که در ورژن های بعدی php کلا وجود نداشت.
-