Borna66
7th May 2012, 00:51
مقدمه
جاوا یکی از تکنولوژیهای عمده ایجاد محتویات فعال در اینترنت است .
اپلت های جاوا ، که توسط کاوشگر بار و اجرا می شوند ، دارای بسیاری از قابلیت های Activex هستند ، اپلت های جاوا برای جلوگیری از اقدامات خرابکارانه ، فاقد توانایی های خاص ( از قبیل دسترسی به سیستم فایل Systemfile هستند و این آنها را بسیار محدود کرده است . از نظر تئوری ، اپلت های جاوا ایمن هستند چون اساساً نمی توانند کارهای خطرناک انجام دهند !
علاوه بر آن چون جاوا زبانی برای اینترنت است ، از ایمنی و حفاظت ذاتی بالایی برخوردار است . طراحان جاوا از ابتدا یک محیط برنامه نویسی امن را مد نظر داشته اند . مسئله حفاظت سیستم ها رابطه تنگاتنگی با اشاره گرها دارد .
اکثر مهاجمان برای ورود غیر قانونی به سیستم های دیگران از این اشاره گرها استفاده می کنند و جاوا با حذف اشاره گرها این راه را سد کرده است .
تکنولوژی Activex یکی از قویترین ابزارهاییست که برنامه نویسان ویندوز در اختیار دارند . تقریبا هر برنامه ای که بنویسند از Activex استفاده خواهند کرد .
جهت کد نویسی و طراحی صفحات وب نیاز به یک Text Editor ساده مانند Notepad که در تمامی ویندوزها قابل دسترسی می باشد و نیاز به نصب Text Editor جدید نیست .
ضمنا سیستم شما باید دارای مشخصات سخت افزاری ذیل باشد :
- حداقل سیستم مورد نیاز پنتیوم 233
- 16 مگابایت Ram
- حدود 600 مگا بایت فضای آزاد
آشنایی با Activex
تکنولوژی Activex یکی از قویترین ابزارهاییست که برنامه نویسان ویندوز در اختیار دارند . تقریبا هر برنامه ای که بنویسند از Activex استفاده خواهند کرد . در این فصل با سر فصل ذیل آشنا خواهیم شد :
- اهمیت مدول های نرم افزاری
- تاریخچه و اصطلاحات Activex
- درک مفهوم جاوا و کنترل Activex
- مطالبی درباره امنیت و توزیع کنترل های Activex
انقلاب مدول های نرم افزاری
همانند هر صنعت دیگری ، کارآیی یکی از دغدغه های اصلی برنامه نویسان است و یکی از جنبه های مهم کارآیی اجتناب از دوباره کاری است . اگر کدی نوشته اید که کار خاصی را انجام می دهد ، چرا باید دفعه بعد همان کد را دوباره بنویسید ؟
اولین گام در راه استفاده مجدد از کدها ، مفهوم زیر مجموعه یا روال Procedure است . کدی را یکبار می نویسید و از آن به بعد در هر جای برنامه که لازم بود فقط کافی است آنرا احضار Call کنید . قرار دادن روال های کلی در یک مدول برنامه نویسی قدمی به پیش بود . با این تمهید می توان از آن روال ها در برنامه های مختلف استفاده کرد .
برنامه نویسی شی گرا
به موازات رشد برنامه نویسی مدولار ، تکنولوژی دیگری در زمینه برنامه نویسی اختراع شد و توسعه یافت .
برنامه نویسی شی گرا یا OOP -Object – Oriented Programming محرک توسعه این تکنولوژی رشد و پیچیدگی روز افزون برنامه ها و مشکلاتی بود که به تیغ آن برنامه نویسان را درگیر خود کرده بود . مهمترین منبع این مشکلات بر هم کنش غیر قابل پیش بینی قسمتهای مختلف یک برنامه با یکدیگر بود . چون این قسمتها مانند دانه های یک زنجیر در هم بافته شده بوند و هر تغییری در یک قسمت به راحتی سایر قسمتها را متاثر می کرد .
را ه حل این مشکل آن بود که هر قسمت برنامه در یک بسته بنام شی Object ، کپسوله یا Encapsulation شود . ساز و کار درونی هر شی مطلقا از دید دنیای خارج مخفی است و آنها نمی توانند تاثیری بر عملکرد وی بگذارند . البته یک شی نمی تواند بکلی از دنیای اطراف خود ایزوله شود چون بدین ترتیب دیگر چیز بی فایده ای بیش نخواهد بود ! به همین دلیل برای ارتباط با دیگر قسمتهای برنامه ، هر شی از وسیله ای بنام واسط یا Interface استفاده می کند . واسط هر شی دو بخش دارد : خواص ( داده ها ) و متدها ( کدها ) ی آن .
تاریخچه کوتاهی از Axtivex
برنامه نویسی مدولار سالها برنامه نویسان را به خود مشغول کرده بود و در واقع یکی از محرکهای اصلی توسعه سیستم عامل ویندوز هم همین ایده کدهای قابل اشتراک و قابل استفاده مجدد بوده است . اولین گام در راه پیاده سازی عناصر مدولار تکنولوژی OLE یا Object Linking and Embedding بود . هدف اولیه OLE ایجاد سندهای مرکب Compound Documents با استفاده از برنامه های مختلف بود .
سندی که مقداری متن و مقداری نمودار دارد ، و هر کدام آنها با نرم افزار خاص خود ایجاد شده اند ، نمونه ای از یک سند مرکب است . وقتی با متن کار می کنید نرم افزارها واژه پرداز کنترل را بدست می گیرد و وقتی با نمودارها کار می کنید نرم افزار ترسیمی مسئولیت را به عهده می گیرد . OLE با وجود کندی و مشکلات دیگر مسلماً قدمی به پیش بود .
تکنولوژی OLE خود بر یک استاندارد کلی تر بنام COM یا Component Object Model استوار است . بزودی COM از سندهای مرکب فراتر رفت و OLE را هم بدنبال خود کشاند و از آن به بعد OLE اصطلاحی شد برای هر چیزی که از تکنولوژی COM استفاده می کرد . سالها بعد که میکروسافت بطور جدی درگیر اینترنت شد ، اصطلاح Activex هم وارد ادبیات کامپیوتری شد . ابتدا این اصطلاح فقط در رابطه با اینترنت و وب بود اما اوضاع بدین منوال باقی نماند و اکنون Activex به آن بخش از تکنولوژیهای COM گفته می شود که در آنها یک قطعه نرم افزاری امکانات خود را در اختیار برنامه های دیگر می گذارد . یکی از ادعاهای Activex ( که بویژه به اینترنت مربوط می شود ) پشتیبانی از نرم افزارهای توزیع شده Distributed است ، و این یعنی ، کنترل های Activex به شما سرویس خواهند داد ، حتی اگر در کامپیوتری دیگر ( و هزاران کیلومتر دورتر ) باشند . اما چه بر سر OLE آمد ؟ این تکنولوژی دوباره به وضعیت اولیه اش برگشت و اکنون فقط با سندهای مرکب سروکار دارد
نقاط ضعف و قوت Activex
تکنولوژی Activex بهترین وسیله برای ایجاد محتویات فعال در وب است . البته برخی با این عقیده مخالفند و باید گفت که این تکنولوژی مسلما تنها ابزار محتویات فعال وب نیست . پس اجازه دهید نگاهی به جنبه های مثبت و منفی این تکنولوژی بیندازیم .
نقاط قوت :
یکی از مهمترین نقاط قوت Activex قدرت آن است . یک کنترل Activex تقریباً از عهده هر کاری که یک برنامه معمولی بتواند انجام دهد ، برمی آید . از دیدگاه یک برنامه نویس وب این بهترین جنبه یک ابزار خلق محتویات دینامیک است . دیگر ابزارهای محتویات فعال ، مانند جاوا و CGI ، در این زمینه بسیار محدودتر از Activex هستند . نکته مثبت دیگر ، حداقل برای بسیاری از افراد ، امکان استفاده از مهارتهای عادی برنامه نویسی در خلق کنترل های Activex است .
روش انجام بارگیری های وب هم یکی از مزایای Activex است . وقتی به یک صفحه وب که عناصر Activex دارد می روید ، وقایع ذیل اتفاق می افتد :
1- اطلاعات مختصری درباره کنترل و شماره ویرایش آن بار می شود .
2- کاوشگر بررسی می کند که آیا این نرم افزار در کامپیوتر شما نصب شده یا خیر .
3- اگر این نرم افزار در سیستم شما وجود نداشت ( یا اینکه ویرایش آن قدیمی تر بود ) ، کاوشگر آنرا بار کرده و سپس نصب و اجرا خواهد کرد .
4- اگر نرم افزار در سیستم شما وجود داشت ، کاوشگر آنرا از همان جا اجرا خواهد کرد .
حتما متوجه مزیت این روش شده اید : هر قطعه نرم افزاری فقط یکبار باید بار شود و دفعات بعد دیگر نیازی به بار شدن آن نخواهد بود ، بنابراین صرفه جویی زیادی در زمان نمایش آن صفحه وب خواهد شد . در ابزارهایی مانند جاوا ، این قبیل نرم افزارها باید هر دفعه مجددا بار شوند و این اجرای آنها را به مراتب کندتر خواهد کرد .
نقاط ضعف – هیچ چیز کامل نیست !
شاید مهمترین جنبه منفی Activex ضعف امنیتی آن باشد . این ضعف ظاهرا یکی از تبعات اجتناب ناپذیر قدرت و انعطاف تکنولوژی Activex است . یک برنامه نویس شرور می تواند براحتی با این تکنولوژی نرم افزاری بسازد که به کامپیوتر دیگران صدمه بزند . با توجه به این وضعیت ، آیا می توان هنگام برخورد با کنترل های Activex روی اینترنت احساس راحتی کرد ؟ پاسخ این سئوال مثبت است و در ادامه توضیح خواهیم داد که چگونه میکروسافت اقدامات امنیتی خاص را برای این تکنولوژی پیاده سازی کرده است . با این وجود همواره این مطلب را در نظر داشته باشید که هیچ سد امنیتی ذاتاً نفوذ ناپذیر نیست .
یکی دیگر از نقاط ضعف تکنولوژی Activex آن است که فقط برخی از کاوشگرهای امروزی از آن پشتیبانی می کنند . اگر در یک صفحه وب نرم افزارهای Activex وجود داشته باشد و فردی با یک کاوشگر که از Activex پشتیبانی نمی کند این صفحه را باز کند قادر به استفاده از مزایای آن نخواهد بود . خوشبختانه این مشکل آنچنان که به نظر می آید حاد نیست ، چون دو تا از مهمترین کاوشگرهای وب (Netscape Navigator , Internet Explorer) از این تکنولوژی پشتیبانی می کنند ( اولی مستقیم و دومی از طریق یک افزودنی قابل نصب ) به هر حال ، وقتی با برنامه نویسی اینترنت سروکار داریم ، این مشکل اساساً وجود ندارد چون این ما هستیم که شبکه را کنترل می کنیم . مشکل دیگر رفتار کنترل های Activex آن است که تمام آنها روی سیستم شما جا خوش کرده و فضای هارددیسک را اشغال خواهند کرد . اما بنظر من نگرانی در این مورد هم بیهوده است چون عناصر Activex معمولا کوچکند و چند مگابایت جایی که احتمالا ( صدها کنترل Activex ) اشغال خواهند کرد در هارد دیسک های بسیار بزرگ امروزی نمی توانند مشکلی ایجاد کند .
وضعیت جاوا چگونه است ؟
جاوا یکی دیگر از تکنولوژیهای عمده ایجاد محتویات فعال در اینترنت است .
اپلت های جاوا ، که توسط کاوشگر بار و اجرا می شوند ، دارای بسیاری از قابلیت های Activex هستند ، اپلت های جاوا برای جلوگیری از اقدامات خرابکارانه ، فاقد توانایی های خاص ( از قبیل دسترسی به سیستم فایل Systemfile هستند و این آنها را بسیار محدود کرده است . از نظر تئوری ، اپلت های جاوا ایمن هستند چون اساساً نمی توانند کارهای خطرناک انجام دهند !
جاوا یکی از تکنولوژیهای عمده ایجاد محتویات فعال در اینترنت است .
اپلت های جاوا ، که توسط کاوشگر بار و اجرا می شوند ، دارای بسیاری از قابلیت های Activex هستند ، اپلت های جاوا برای جلوگیری از اقدامات خرابکارانه ، فاقد توانایی های خاص ( از قبیل دسترسی به سیستم فایل Systemfile هستند و این آنها را بسیار محدود کرده است . از نظر تئوری ، اپلت های جاوا ایمن هستند چون اساساً نمی توانند کارهای خطرناک انجام دهند !
علاوه بر آن چون جاوا زبانی برای اینترنت است ، از ایمنی و حفاظت ذاتی بالایی برخوردار است . طراحان جاوا از ابتدا یک محیط برنامه نویسی امن را مد نظر داشته اند . مسئله حفاظت سیستم ها رابطه تنگاتنگی با اشاره گرها دارد .
اکثر مهاجمان برای ورود غیر قانونی به سیستم های دیگران از این اشاره گرها استفاده می کنند و جاوا با حذف اشاره گرها این راه را سد کرده است .
تکنولوژی Activex یکی از قویترین ابزارهاییست که برنامه نویسان ویندوز در اختیار دارند . تقریبا هر برنامه ای که بنویسند از Activex استفاده خواهند کرد .
جهت کد نویسی و طراحی صفحات وب نیاز به یک Text Editor ساده مانند Notepad که در تمامی ویندوزها قابل دسترسی می باشد و نیاز به نصب Text Editor جدید نیست .
ضمنا سیستم شما باید دارای مشخصات سخت افزاری ذیل باشد :
- حداقل سیستم مورد نیاز پنتیوم 233
- 16 مگابایت Ram
- حدود 600 مگا بایت فضای آزاد
آشنایی با Activex
تکنولوژی Activex یکی از قویترین ابزارهاییست که برنامه نویسان ویندوز در اختیار دارند . تقریبا هر برنامه ای که بنویسند از Activex استفاده خواهند کرد . در این فصل با سر فصل ذیل آشنا خواهیم شد :
- اهمیت مدول های نرم افزاری
- تاریخچه و اصطلاحات Activex
- درک مفهوم جاوا و کنترل Activex
- مطالبی درباره امنیت و توزیع کنترل های Activex
انقلاب مدول های نرم افزاری
همانند هر صنعت دیگری ، کارآیی یکی از دغدغه های اصلی برنامه نویسان است و یکی از جنبه های مهم کارآیی اجتناب از دوباره کاری است . اگر کدی نوشته اید که کار خاصی را انجام می دهد ، چرا باید دفعه بعد همان کد را دوباره بنویسید ؟
اولین گام در راه استفاده مجدد از کدها ، مفهوم زیر مجموعه یا روال Procedure است . کدی را یکبار می نویسید و از آن به بعد در هر جای برنامه که لازم بود فقط کافی است آنرا احضار Call کنید . قرار دادن روال های کلی در یک مدول برنامه نویسی قدمی به پیش بود . با این تمهید می توان از آن روال ها در برنامه های مختلف استفاده کرد .
برنامه نویسی شی گرا
به موازات رشد برنامه نویسی مدولار ، تکنولوژی دیگری در زمینه برنامه نویسی اختراع شد و توسعه یافت .
برنامه نویسی شی گرا یا OOP -Object – Oriented Programming محرک توسعه این تکنولوژی رشد و پیچیدگی روز افزون برنامه ها و مشکلاتی بود که به تیغ آن برنامه نویسان را درگیر خود کرده بود . مهمترین منبع این مشکلات بر هم کنش غیر قابل پیش بینی قسمتهای مختلف یک برنامه با یکدیگر بود . چون این قسمتها مانند دانه های یک زنجیر در هم بافته شده بوند و هر تغییری در یک قسمت به راحتی سایر قسمتها را متاثر می کرد .
را ه حل این مشکل آن بود که هر قسمت برنامه در یک بسته بنام شی Object ، کپسوله یا Encapsulation شود . ساز و کار درونی هر شی مطلقا از دید دنیای خارج مخفی است و آنها نمی توانند تاثیری بر عملکرد وی بگذارند . البته یک شی نمی تواند بکلی از دنیای اطراف خود ایزوله شود چون بدین ترتیب دیگر چیز بی فایده ای بیش نخواهد بود ! به همین دلیل برای ارتباط با دیگر قسمتهای برنامه ، هر شی از وسیله ای بنام واسط یا Interface استفاده می کند . واسط هر شی دو بخش دارد : خواص ( داده ها ) و متدها ( کدها ) ی آن .
تاریخچه کوتاهی از Axtivex
برنامه نویسی مدولار سالها برنامه نویسان را به خود مشغول کرده بود و در واقع یکی از محرکهای اصلی توسعه سیستم عامل ویندوز هم همین ایده کدهای قابل اشتراک و قابل استفاده مجدد بوده است . اولین گام در راه پیاده سازی عناصر مدولار تکنولوژی OLE یا Object Linking and Embedding بود . هدف اولیه OLE ایجاد سندهای مرکب Compound Documents با استفاده از برنامه های مختلف بود .
سندی که مقداری متن و مقداری نمودار دارد ، و هر کدام آنها با نرم افزار خاص خود ایجاد شده اند ، نمونه ای از یک سند مرکب است . وقتی با متن کار می کنید نرم افزارها واژه پرداز کنترل را بدست می گیرد و وقتی با نمودارها کار می کنید نرم افزار ترسیمی مسئولیت را به عهده می گیرد . OLE با وجود کندی و مشکلات دیگر مسلماً قدمی به پیش بود .
تکنولوژی OLE خود بر یک استاندارد کلی تر بنام COM یا Component Object Model استوار است . بزودی COM از سندهای مرکب فراتر رفت و OLE را هم بدنبال خود کشاند و از آن به بعد OLE اصطلاحی شد برای هر چیزی که از تکنولوژی COM استفاده می کرد . سالها بعد که میکروسافت بطور جدی درگیر اینترنت شد ، اصطلاح Activex هم وارد ادبیات کامپیوتری شد . ابتدا این اصطلاح فقط در رابطه با اینترنت و وب بود اما اوضاع بدین منوال باقی نماند و اکنون Activex به آن بخش از تکنولوژیهای COM گفته می شود که در آنها یک قطعه نرم افزاری امکانات خود را در اختیار برنامه های دیگر می گذارد . یکی از ادعاهای Activex ( که بویژه به اینترنت مربوط می شود ) پشتیبانی از نرم افزارهای توزیع شده Distributed است ، و این یعنی ، کنترل های Activex به شما سرویس خواهند داد ، حتی اگر در کامپیوتری دیگر ( و هزاران کیلومتر دورتر ) باشند . اما چه بر سر OLE آمد ؟ این تکنولوژی دوباره به وضعیت اولیه اش برگشت و اکنون فقط با سندهای مرکب سروکار دارد
نقاط ضعف و قوت Activex
تکنولوژی Activex بهترین وسیله برای ایجاد محتویات فعال در وب است . البته برخی با این عقیده مخالفند و باید گفت که این تکنولوژی مسلما تنها ابزار محتویات فعال وب نیست . پس اجازه دهید نگاهی به جنبه های مثبت و منفی این تکنولوژی بیندازیم .
نقاط قوت :
یکی از مهمترین نقاط قوت Activex قدرت آن است . یک کنترل Activex تقریباً از عهده هر کاری که یک برنامه معمولی بتواند انجام دهد ، برمی آید . از دیدگاه یک برنامه نویس وب این بهترین جنبه یک ابزار خلق محتویات دینامیک است . دیگر ابزارهای محتویات فعال ، مانند جاوا و CGI ، در این زمینه بسیار محدودتر از Activex هستند . نکته مثبت دیگر ، حداقل برای بسیاری از افراد ، امکان استفاده از مهارتهای عادی برنامه نویسی در خلق کنترل های Activex است .
روش انجام بارگیری های وب هم یکی از مزایای Activex است . وقتی به یک صفحه وب که عناصر Activex دارد می روید ، وقایع ذیل اتفاق می افتد :
1- اطلاعات مختصری درباره کنترل و شماره ویرایش آن بار می شود .
2- کاوشگر بررسی می کند که آیا این نرم افزار در کامپیوتر شما نصب شده یا خیر .
3- اگر این نرم افزار در سیستم شما وجود نداشت ( یا اینکه ویرایش آن قدیمی تر بود ) ، کاوشگر آنرا بار کرده و سپس نصب و اجرا خواهد کرد .
4- اگر نرم افزار در سیستم شما وجود داشت ، کاوشگر آنرا از همان جا اجرا خواهد کرد .
حتما متوجه مزیت این روش شده اید : هر قطعه نرم افزاری فقط یکبار باید بار شود و دفعات بعد دیگر نیازی به بار شدن آن نخواهد بود ، بنابراین صرفه جویی زیادی در زمان نمایش آن صفحه وب خواهد شد . در ابزارهایی مانند جاوا ، این قبیل نرم افزارها باید هر دفعه مجددا بار شوند و این اجرای آنها را به مراتب کندتر خواهد کرد .
نقاط ضعف – هیچ چیز کامل نیست !
شاید مهمترین جنبه منفی Activex ضعف امنیتی آن باشد . این ضعف ظاهرا یکی از تبعات اجتناب ناپذیر قدرت و انعطاف تکنولوژی Activex است . یک برنامه نویس شرور می تواند براحتی با این تکنولوژی نرم افزاری بسازد که به کامپیوتر دیگران صدمه بزند . با توجه به این وضعیت ، آیا می توان هنگام برخورد با کنترل های Activex روی اینترنت احساس راحتی کرد ؟ پاسخ این سئوال مثبت است و در ادامه توضیح خواهیم داد که چگونه میکروسافت اقدامات امنیتی خاص را برای این تکنولوژی پیاده سازی کرده است . با این وجود همواره این مطلب را در نظر داشته باشید که هیچ سد امنیتی ذاتاً نفوذ ناپذیر نیست .
یکی دیگر از نقاط ضعف تکنولوژی Activex آن است که فقط برخی از کاوشگرهای امروزی از آن پشتیبانی می کنند . اگر در یک صفحه وب نرم افزارهای Activex وجود داشته باشد و فردی با یک کاوشگر که از Activex پشتیبانی نمی کند این صفحه را باز کند قادر به استفاده از مزایای آن نخواهد بود . خوشبختانه این مشکل آنچنان که به نظر می آید حاد نیست ، چون دو تا از مهمترین کاوشگرهای وب (Netscape Navigator , Internet Explorer) از این تکنولوژی پشتیبانی می کنند ( اولی مستقیم و دومی از طریق یک افزودنی قابل نصب ) به هر حال ، وقتی با برنامه نویسی اینترنت سروکار داریم ، این مشکل اساساً وجود ندارد چون این ما هستیم که شبکه را کنترل می کنیم . مشکل دیگر رفتار کنترل های Activex آن است که تمام آنها روی سیستم شما جا خوش کرده و فضای هارددیسک را اشغال خواهند کرد . اما بنظر من نگرانی در این مورد هم بیهوده است چون عناصر Activex معمولا کوچکند و چند مگابایت جایی که احتمالا ( صدها کنترل Activex ) اشغال خواهند کرد در هارد دیسک های بسیار بزرگ امروزی نمی توانند مشکلی ایجاد کند .
وضعیت جاوا چگونه است ؟
جاوا یکی دیگر از تکنولوژیهای عمده ایجاد محتویات فعال در اینترنت است .
اپلت های جاوا ، که توسط کاوشگر بار و اجرا می شوند ، دارای بسیاری از قابلیت های Activex هستند ، اپلت های جاوا برای جلوگیری از اقدامات خرابکارانه ، فاقد توانایی های خاص ( از قبیل دسترسی به سیستم فایل Systemfile هستند و این آنها را بسیار محدود کرده است . از نظر تئوری ، اپلت های جاوا ایمن هستند چون اساساً نمی توانند کارهای خطرناک انجام دهند !