مفهوم نرم افزار تحت وب

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

به همین ترتیب نرم افزاری که برای مشاهده اطلاعات وب (مرورگر وب یا browser ) به کار می رود ، به چنان اهمیتی رسیده است که شرکتهای بزرگ نرم افزاری ، کلیدی ترین بخش تولیدات خود را به آن اختصاص داده اند .

ابعاد تکنیکی وب

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

تعریف وب
وب یک سیستم اطلاعاتی و ارتباطی برپایه ابر متنها (hypertext ) بر روی شبکه اینترنت می باشد که بر اساس مدل سرویسگیر و سرویس دهنده عمل می کند.
سرویسگیر همان مرورگر وب می تواند به اطلاعات چند پروتکلی و اطلاعات ابر رسانه ای با استفاده از یک سیستم آدرس دهی مخصوص دسترسی پیدا کند.
در اصصلاح ریاضی وب یک گراف جهت دار است که راسهای آن را صفحات وب و یالهای آن را پیوندهای مربوط به ابر متنها تشکیل می دهند.

اساس عملکرد وب
مدل سرویس گیرنده / سرویس دهنده در سیستم شبکه های کامپیوتری شامل 3 جز است :
سرویس دهنده    -    سرویس گیرنده – و شبکه  .

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

برنامه های تحت وب

هر برنامه کاربردی تحت وب ، نوعی برنامه کاربردی سرویس گیرنده / سرویس دهنده به شمار می آید . این بدین معناست که وظایف برنامه کاربردی در بین یک کامپیوتر سرویس گیرنده و یک کامپیوتر سرویس دهنده تقسیم می شود . این کامپیوترها از طریق اینترنت یا شبکه داخلی با یکدیگر به تبادل اطلاعات می پردازند.

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

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


امنیت در وب

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

تعریف امنیت تحت وب: به مجموعه فرایند هایی گفته می شود که باعث حفاظت از اطلاعات ،بواسطه یکسری محدودیتها و ابزار می شود .

طبقه بندی امنیت نرم افزارهای تحت وب :
1-امنیتی که توسط نرم افزار ایجاد می شود یعنی در کد برنامه باید یکسری کدهای امنیتی ایجاد شود
در این سطح امنیتی کنترل امنیت کاملا توسط نویسنده نرم افزار ایجاد می شود و برنامه نویس می تواند با خلاقیتهای خود انواع روشهای امنیتی را اعمال کند.

2-امنیتی که توسط سرور یا میزبان نرم افزار اعمال می شود.

در این حالت 2 گزینه دارد
  الف-سرور در اختیار شماست: اگر سرور در سازمان شما باشد شما می توانید همانند حالت 1 گزینه های امنیتی خاص و مورد نیاز خود را تعریف کنید
  ب- سرور خارجی و در اختیار شما نیست : در این حالت کنترل دست شما نیست و شما مجبور هستید از همان تنظیمات امنیتی تعریف شده توسط شرکت ارایه دهنده سرور استفاده کنید.

چه چیزهایی باید ایمن شوند:

هنگامی که سازمانی بخواهد سیستمهای خود را امن کند باید نخست نیازمندیها را مشخص کند. دانشگاه نیاز به حفاظت از سلامت دادهها و تا حدی محرمانگی آنها- مانند نمرات- دارد. ضمناً ممکن است نیاز به دسترسپذیر بودن سیستم از طریق اینترنت برای دانشجویان و استادان داشته باشد. در مقابل سازمان نظامی به محرمانگی کلیه کارهای خود تأکید دارد. سیستمهای آن نباید از طریق شبکه در دسترس باشند. سلامت دادهها نیز مهم است ولی نه به اندازه محرمانگی آنها،  یک سازمان نظامی ترجیح میدهد دادهها از بین بروند تا اینکه افشا شوند.

اما یک نکته مشترک در همه جا وجود دارد و آن هم این است که اطلاعات کجا وچگونه ذخیره شوند
در جواب مکان ذخیره شدن باید گفت چون نرم افزار مخاطب شما اطلاعاتی است پس اطلاعات آن در بانک اطلاعاتی ذخیره می شوند و به تبع آن بانک اطلاعات در سرور ذخیره می شود . پس نتیجه می گیریم محل ذخیره شدن اطلاعات تابع حالت2 با لا است(امنیتی که توسط سرور یا میزبان نرم افزار اعمال می شود)

اما در جواب چگونگی ذخیره شدن اطلاعات چندین روش وجود دارد که باید به آنها توجه کنید که در اینجا بحث مدیریت اطلاعات مهم مطرح می شود .در بحث مدیریت اطلاعات نیز چند موضوع مهم مطرح می شود :
1-رمز نگاری اطلاعات  :
برخی اطلاعات جنبه ی حیاتی دارند و حتی خود برنامه نویس هم بعد از انتشار برنامه نباید از اونها مطلع باشه. مثل کلمه ی عبورحساب بانکی یک فرد. در این حالت این کلمه ی عبور باید با یک الگوریتم به رمز در بیاد و در بانک اطلاعاتی ذخیره شود. بهتر هست که این دسته از اطلاعات با استفاده از یک بستر انتقال امن منتقل شوند.

مانند پروتکل  SSL

SSL  چیست ؟ نوعی پروتکل امنیتی است که امکان می دهد داده ها را با استفاده از رمز گذاری از طریق اینترنت ارسال کنید .برای تشخیص اینکه داده ها از طریق اتصال امن انتقال می یابند می توانید به آدرس موجود در خط آدرس مرورگر اینترنت دقت کنید اگر به جای http    عبارت  https   آغاز شده باشد در آن صورت متوجه می شوید که شما از طریق اتصال امن در حال انجام عملیات خود هستید . به عنوان مثال به ابتدای آدرس زیر که سایت بانکداری اینترنتی ملت است دقت کنید
https://ebanking.bankmellat.ir/ebanking/
پروتکل SSL قبل از اینکه اطلاعات شخصی مشتری از رایانه او خارج شود آنها را کدگذاری و رمز نگاری کرده تا این اطمینان برای مشتری حاصل شود که هنگام ارسال و دریافت اطلاعات هیچ شخص دیگری نمی تواند اطلاعات را خوانده و یا آنها را تغییر دهد.
2-جلوگیری از ورود اطلاعات پی در پی توسط نرم افزارها :
حتما دیده اید که در بعضی سایتها و نرم افزارها برای ثبت نام از تصاویر اینترنتی استفاده می کنند که عبارتی در آن وجود دارد که شما باید آن را در جای مخصوص ثبت کنید ، می دانید چرا ؟
یک تصویر امنیتی از تعدادی حرف و عدد در کنار هم تشکیل شده که تنها انسان ها قادر به خواندن اونها هستند و در جایی که نیاز به ورود اطلاعات هست استفاده میشه. کاربرد تصاویر امنیتی در جلوگیری از ارسال مداوم داده ها به سرور هست . حملاتی که به اشغال شدن سرور منجر میشن به حملات DOS معروف هستند. نوشتن برنامه ای که در فواصل زمانی کوتاه، مدام داده هایی رو از طریق برنامه ی شما به سرور ارسال کنه بسیار راحت هست. بدین دلیل همیشه در صفحاتی که برای عموم قابل مشاهده هست (و نه خواص) حتما از تصاویر امنیتی استفاده کنید.


3-جلوگیری از دسترسی و تخریب اطلاعات توسط کاربران غیر مجاز:
برای جلوگیری از تخریب اطلاعات توسط کاربران باید روشهای آسیپ پذیری اطلاعات را بدانیم که بنده به مهمترین آنها اشاره ای می کنم البته روشها زیاد است ولی من 3 تا را بررسی می کنم
 
1-  محافظت از برنامه در برابر   SQL Injection
به طور خلاصه، به تزریق کدهای SQL از طریق برنامه، SQL Injection گفته میشه.
شاید بشه گفت که خطرناکترین نوع حمله ای که می تونه به یک برنامه صورت بگیره SQL Injection هست که متاسفانه بسیاری از افراد اون رو نادیده میگیرن و نسبت به اون بی توجه هستن.
عدم توجه به توانایی تزریق SQL به برنامه، عملا دیتابیس رو در اختیار فرد مهاجم قرار میده و می تونه تمام هست و نیستی شما رو بر باد بده! یعنی فرد مهاجم بحای ورود اطلاعات مناسب یک دستور sql  به بانک اطلاعاتی ارسال می کند که باعث صدمه به اطلاعات می شود. مثلا به هنگام ورود اطلاعات نام و رمز کاربر برای ورود به برنامه ، مهاجم می تواند یک دستور  sqlرا بفرستد ، در این حالت برنامه نویس باید در ورود اطلاعات از برنامه به بانک اطلاعاتی دقت کند .

2-محافظت از برنامه در برابر حملات XSS
این روش ایجاد اختلال در صفحات وب با اجرای اسکریپت است .یک هکر برای حمله با تزریق یک اسکریپت در میان صفحه وب از طریق قسمت ورودی های کاربران و کلیک دکمه تایید بدون چک کردن لازم می تواند صفحه شما را مورد حمله قرار دهد .
 
3-حافظت از برنامه در برابر   Session Hijacking
یکی از قدیمی ترین حملاتی که به برنامه های وب صورت می گیره سرقت Session هست. Session برای نگهداری داده هایی به کار میره که برای هر کاربر منحصر به فرد هستند. مثلا نمایش نام کاربر پس از لوگین، در تمامی صفحات سایت Session در حافظه ی سرور نگهداری میشه نرم افزار برای اینکه بتونه تشخیص بده که هر Session متعلق به کدام کاربر هست، مشخصه ای یکتا برای هر Session ایجاد می کنه و این مشخصه رو در یک کوکی ذخیره می کند . پر واضح هست که اگر کوکی ها در مرورگر کاربر غیر فعال باشند، استفاده از Session عملا کاربردی نداره به طور خلاصه اگر فردی بتونه این کوکی رو به سرقت ببره، به راحتی می تونه خودش رو صاحب Session شما معرفی کنه.