PDA

View Full Version : سوال: کسی می دونه cgi ها چی هستن و چه کاربردی دارن؟



idocsidocs
یک شنبه 24 مهر 1390, 00:37 صبح
کسی می دونه cgi ها چی هستن و چه کاربردی دارن؟

من تا حالا نشده که از cgiاستفاده کنم و کلا نمی دونم که کارشون چیه.

Hooman.Prog
یک شنبه 24 مهر 1390, 09:53 صبح
CGI یک استاندارد هست که مشخص میکنه وب سرور چطور با برنامه های خارجی تعامل میکنه و بعکس.
در گذشته که زبانهای سمت سرور امروزی مثل PHP نبودن از این روش برای صفحات دینامیک سمت سرور و دسترسی به دیتابیس و غیره استفاده میکردن. یعنی فرض کن وب سرور شما خودش این امکانات رو در اختیار نمیذاره و زبان مخصوص برنامه نویسی سمت سرور وب مثل PHP نداری. اما با CGI وب سرور میتونه درخواست رو به یک برنامهء خارجی بده (که این برنامه میتونه به هر زبانی مثل سی، سی++، Perl و غیره که بتونه روی سیستم عامل سرور اجرا بشه نوشته شده باشه) و بعد خروجی عادی برنامه رو بگیره و به کلاینت ارسال کنه.
یعنی به این شکل عملا پردازش و ارتباط با دیتابیس و هر فانکشن پیشرفتهء دیگری که شما نیاز دارید توسط اون برنامه انجام میشه و خروجی رو هم اون برنامه توسط توابع معمولی چاپ خروجی خودش انجام میده، و وب سرور بیشتر فقط یک واسطه برای دریافت درخواست کلاینت و ارسال پاسخ بهش هست.

ضمنا CGI هنوز هم کاربرد داره. خیلی وقتا که شما از PHP استفاده میکنید (روی هاست خودتون) درواقع روش اجرا به شکل CGI (یا یکی از انواع تکامل یافتهء اون) هست. یعنی PHP بصورت یک ماجول و جزیی از خود آپاچی لود و اجرا نمیشه، بلکه بصورت یک برنامهء خارجی و تحت استاندارد CGI اجرا میشه.
اما بعضی سرورها هم از mod_php استفاده میکنن که یک ماجول آپاچی هست. در این حالت PHP بعنوان جزیی از برنامهء آپاچی عمل میکنه.
امنیت مدل CGI بیشتره بخاطر اینکه میشه هر نمونه از برنامه و پردازش کاربران رو تحت اکانت های لینوکس خودشون اجرا کرد، اما در روش mod_php چون تمام پردازشها جزیی از آپاچی هستن بنابراین برنامه های تمام کاربران تحت کاربری که آپاچی تحت اون اجرا میشه اجرا میشن و نمیشه بین اونها تفکیک قائل شد. تنها مزیت mod_php سرعت بیشتر و احتمالا مصرف منابع کمتر هست. اگر هاست شما اشتراکی نباشه میتونید با خیال راحت از mod_php استفاده کنید، چون دیگه خطر دسترسی غیرمجاز توسط کاربران دیگه وجود نداره. البته mod_php رو هم بنظرم میشه امن کرد، اما روشش پیچیده تره و نیاز به تنظیمات و تمهیدات بیشتری داره. هم تنظیماتی که ادمین سرور باید انجام بده و هم تنظیمات و روشهایی که خود برنامه نویس PHP اعمال میکنه (مثل امن کردن سشن ها).

اما در خیلی موارد وقتی میگن CGI، منظور اون برنامه های قدیمی است که اکثرا با سی و سی++ و پرل و حتی BASH نوشته میشدن.
در اون برنامه ها شما امکانات سطح بالا نداشتید و مثلا باید خودتون هدرها رو بصورت خام بر اساس قواعد CGI و مثل خروجیهای دیگه پرینت میکردید و غیره. ولی الان با PHP هیچ نیازی نیست چیزی از CGI بدونید و برای هرکاری تابع خاصی هست و خیلی امکانات سطح بالا و پیشرفتهء پرکاربرد در وب رو هم بصورت آماده در اختیار شما میذاره.

CGI یک زبان نیست. فقط یک استاندارد هست که مشخص میکنه برنامه های خارجی چطور برای پردازش درخواستهای وب استفاده میشن. یک برنامهء CGI یک برنامه هست مثل تمام برنامه های دیگه، و تنها فرقش اینه که خروجی ای که تولید میکنه بر اساس فرمت لازم و برای وب هست (مثلا تگهای HTML رو پرینت میکنه) و از یکسری متغییرهای محیطی میتونه برای گرفتن اطلاعات هدرهای درخواست و تنظیمات وب سرور استفاده کنه که این متغییرها رو وب سرور در محیط اجرای برنامه ایجاد میکنه. الان شما بجای اون متغییرهای محیطی، آرایهء $_SERVER رو در PHP دارید. درواقع PHP میاد و متغییرهای محیطی وب سرور رو به شکل این آرایه در اختیار شما قرار میده.

idocsidocs
یک شنبه 24 مهر 1390, 12:14 عصر
CGI یک استاندارد هست که مشخص میکنه وب سرور چطور با برنامه های خارجی تعامل میکنه و بعکس.
مرسی از توضیحات کاملتون.

قبلا یکی از دوستان توضیحاتی داداه بودن که چطور می شه هاستهای اشتراکی که با مد پی اچ پی اجرا می شن رو هک کرد.

من تا حالا نشده که توی کارهام از CGI استفاده کنم، آیا وجود CGI ها به حالت بدون استفاده خطری برای سرور ندارن و آیا می شه اونها رو از سی پنل حذف یا غیر فعال کرد؟

Hooman.Prog
یک شنبه 24 مهر 1390, 15:11 عصر
قبلا یکی از دوستان توضیحاتی داداه بودن که چطور می شه هاستهای اشتراکی که با مد پی اچ پی اجرا می شن رو هک کرد.
احتمالا پیکربندی سرور هم ایراد داشته.


من تا حالا نشده که توی کارهام از CGI استفاده کنم، آیا وجود CGI ها به حالت بدون استفاده خطری برای سرور ندارن و آیا می شه اونها رو از سی پنل حذف یا غیر فعال کرد؟
از طریق سی پنل نمیدونم ولی فکر میکنم جزو پیکربندی آپاچی باشه.

idocsidocs
یک شنبه 24 مهر 1390, 15:34 عصر
از طریق سی پنل نمیدونم ولی فکر میکنم جزو پیکربندی آپاچی باشه. با توجه به وجود پی اچ پی، بنظرتون چرا هنوز cgi رو توی سی پنل استفاده می کنن؟

Hooman.Prog
یک شنبه 24 مهر 1390, 16:54 عصر
دلایل مختلفی میتونه داشته باشه.
مثلا امکان استفاده از برنامه های قدیمی.