CGI مخفف Common Gateway Interface است. زمانی که برنامه نویسان به ایجاد صفحات پویا روی آوردند CGI و دیگر اسکریپت ها نیز مورد توجه قرار گرفتند. CGIبه هر برنامه اجرایی اجازه می دهد اجرا شده و خروجی خود را به مشتری (Client) برگرداند. CGI واسطی است که اطلاعات را از وب سایت (از آن Html) می گیرد و به وب سرور می دهد و برعکس. همه پردازش ها توسط برنامه انجام می شود و CGI تنها داده را از برنامه می گیرد.
کاربرد CGI: در واقع هر جا که یک فرمی وجود داشته باشد و بتوانیم از آن فرم اطلاعات را دریافت کنیم و به سرور بفرستیم، می توان از CGI استفاده کرد.
ساختار CGI: در این گونه ساختارها یک پوشه به نام cgi-bin در مسیر اصلی وب سایت قرار دارد که اسکریپت ها با زمان های مختلف (جاوا، C، perl و …) در آن قرار دارند (پسوند .cgi). این اسکریپت ها باید دسترسی اجرایی (executable) داشته باشند. CGI از یک سری متغیرها برای ارتباط با کاربر و گردش اطلاعات استفاده می کند. مثل REQUEST_METHOP، QUERY-STRING، REMOTE_HOST و …
ضعف های CGI: از آن جایی که از تمام زبان ها استفاده می کند باید استانداردی داشته باشد که بتواند با همه سازگاری داشته باشد و درخواست و پاسخ استانداردی را ارجاع دهد. این مسأله باعث به وجود آمدن یک سری آسیب پذیری ها در آن شده است. با اجرای هر اسکریپت CGI یک پروسه در سرور ایجاد می شود که خود این امر باعث افزایش load سیستم می شود. پس می تواند منجر به حملات DoS شود. اسکریپت های CGI دسترسی خواندن و نوشتن در دیسک را دارند پس احتمال آسیب پذیری را نیز افزایش می دهند.
گرفتن متغیرها در CGI: در مثال زیر نحوه دریافت متغیرها در طرف کاربر نشان داده شده است.
<form action=”script.cgi” method = “GET | POST”>
<input type “…” name = “input1”>
<input type “…” name = “input2”>
<input type “…” name = “inputN”>
</form>
در مثال زیر دریافت متغیر در اسکریپت CGI نشان داده شده است
input1= val1& input2 = val2& …& InputN = valN
البته CGI در حال حاضر کمتر استفاده می شود.