آخرین نسخه از HTML همراه با حفره های امنیتی و البته مزایایش عرضه می شود. در این مقاله به طور خلاصه به جنبه های امنیتی نسخه جدید این زبان می پردازیم.

HTML5 آخرین نسخه از استاندارد «زبان برنامه نویسی ابر متن ها» یا همان HTML است. این فناوری به غایت مهم در واقع سنگ بنایی است که اینترنت روی آن بنا شده است. در اصل محتویاتی که در شبکه جهانی اینترنت منتشر می شود بر پایه HTML است و با استفاده از HTML ارائه می شود. هدف اولیه HTML5 افزایش پشتیبانی سیستم های معمولی از فایل های چند رسانه ای، بهبود استانداردها و سازگاری با سیستم های مختلف است به طوری که هم انسان و هم ماشین بتوانند آن را تجزیه و تفسیر کنند.

به علاوه HTML5 از برنامه های سنگین مبتنی بر وب پشتیبانی می کند به طوری که کاربر دقیقاً همان تجربه ای را از کار با آنها خواهد داشت که از کار با برنامه های سنگینی که برای رایانه های شخصی و نه وب طراحی شده اند. به عنوان مثال HTML5 از ذخیره سازی در محدوده رایانه شخصی کاربران و ارتباط با سرویس دهنده (سرور) برای تطابق محتویات پشتیبانی می کند.
دنباله های جدیدی همچون <video>, <audio> و <canvas> در HTML5 ارائه شده اند که نمایش محتویات چند رسانه ای را بدون نیاز به استفاده از افزونه های اختصاصی یا سفارشی در مرورگرها یا طراحی سفارشی رابط های کاربری برنامه نویسی (API) فراهم می آورند. به همین ترتیب ویژگی های جدید دیگری هم در سطح کلی (global) مثل contenteditable (به معنای محتویات قابل ویرایش) و در سطح رویداد (event) مثل oneerror (به معنای یک اشتباه) نیز به HTML5 اضافه شده اند. البته برخی از دنباله های (تگ های) نسخه های قبلی که در شیوه نامه های فراگیر (CSS) کاربرد داشتند در این نسخه از HTML حذف شده اند. برخی از دنباله ها نیز برای سازگاری هرچه بیشتر و استانداردسازی رفتار HTML در دستگاه های مختلف، اصلاح شده اند. از دیدگاه قابلیت های زیر برنامه نویسی (اسکریپت نویسی)، جاوا اسکریپت همچنان جزء اصلی HTML به شمار می آید. رابط کاربری این زبان برنامه نویسی و ویژگی های عناصر آن زبان برنامه نویسی و ویژگی های عناصر آن توسعه یافته تا هم دنباله ها و ویژگی های جدید HTML را پشتیبانی کند و هم قابلیت های کنونی آن را افزایش دهد. هر چند HTML5 هنوز از لحاظ فنی به طور کامل شکل نگرفته، اما مرورگرهای اصلی از بسیاری از ویژگی های آن پشتیبانی می کنند و این پشتیبانی در نسخه های جدیدتر این مرورگرها بیشتر هم می شود. HTML5 همانند هر فناوری جدید دیگری ویژگی هایی دارد که از لحاظ امنیتی قابل بحث هستند. برخی از این ویژگی ها باعث بهبود امنیت این زبان شده اند در حالی که برخی دیگر راه را برای خطرات احتمالی که برنامه ها و کاربران آنها را تهدید می کند، باز می کنند.
مروری بر امنیت HTML5
توجه به جنبه های امنیتی HTML5 در سطوح بالا قطعاً راه گشاست. مهم ترین اصول امنیتی طبق معمول به قوت خود باقی هستند (شکل شماره یک را ببینید) و در نظر گرفتن چند مورد از آنها حداقل به خوبی به ما خواهد گفت که پدیدآورندگان برنامه های رایانه ای چطور از HTML5 در برنامه های خود بهره برده اند. به علاوه در نظر گرفتن این اصول روش خوبی برای اطمینان از مدیریت ریسک های امنیتی حین طراحی و ارائه برنامه هاست. تدابیر اتخاذ شده در HTML5 سطح امنیت برنامه های مبتنی بر وب را به شکل تحسین برانگیزی افزایش داده است. برخی از این تدابیر مربوط به پدیدآورندگان مرورگرها می شود و خارج از موضوع مورد بحث این مقاله است، اما برخی دیگر مربوط به توسعه دهندگان برنامه های مبتنی بر وب و متعاقباً کاربران این برنامه ها می شود.
در زیر نگاهی به تدابیر اتخاذ شده در HTML5 جهت رفع ضعف های امنیتی می اندازیم و تأثیر آن را بر سطح امنیت برنامه ها مورد بررسی قرار می دهیم.

ویژگی ها و دنباله های (تگ های) جدید

دنباله <canvas> باعث آشکار شدن اطلاعات در برنامه هایی می شود که زیر برنامه ها (اسکریپت ها) و تصاویر را از منبع دیگری می گیرند و وارد محدوده برنامه می کنند. احتمال آن هست که یک زیر برنامه مخرب پیکسل ها را بخواند و باعث از بین رفتن اطلاعات شود. به همین ترتیب وقتی یک صفحه اینترنتی یا فریم درونی آن بارگذاری می شود، کدهای مخرب می توانند در ویژگی هایی همچون autofocus (به معنای تمرکز خودکار) و onfocus (به معنای تمرکز بر) اجرا شوند. این خطرات تفاوت زیادی با خطرات مرتبط با اجرای زیربرنامه بین سایت ها که از طریق ویژگی ها صورت می گیرد، ندارد. به هر حال هر کدام از دنباله های جدید، ویژگی های خاص خود را دارد که می تواند از مزایای ارزشمند جاوا اسکریپت نیز برخوردار باشد؛ به همین جهت توسعه دهندگان وب باید از معتبر بودن کدهای ورودی و خروجی اطمینان حاصل کنند، مخصوصاً اگر داده های نامطمئن برای تولید کد HTML به کار روند.

بررسی دقیق داده ها

HTML5 از فرمت های مختلف چند رسانه ای پشتیبانی می کند، از فرمت های صوت و تصویری گرفته تا گرافیک های برداری با قابلیت بزرگنمایی بدون از بین رفتن کیفیت (SVG). از آنجا که بررسی دقیق این فرمت ها به مرورگر یا برنامه مورد استفاده کاربر مربوط می شود، دست و پنجه نرم کردن با خطراتی که به آن اشاره شد نیز تا حد زیادی به عهده سازندگان این برنامه هاست. بررسی دقیق هر فرمت دودویی (باینری) مملو از ریسک است و بر همین اساس احتمال سوء استفاده از حفره های امنیتی HTML نیز در آینده زیاد است. یکی از مسائل مرتبط در این زمینه مسئله وب سوکت هاست.
وب سوکت در واقع ساز و کاری ارتباطی مابین مرورگر و سرویس دهنده (سرور) است که به گفته کارشناسان امنیت وب سریعاً یافت شده و می تواند مورد سوء استفاده واقع شود، بدین ترتیب که احتمال اجرای کدهای مخرب در مرورگر کاربر از طریق آلوده سازی حافظه نهانی (کش) مرورگر در این ساز و کار وجود دارد.

چک کردن منشأ

یکی از ساز و کارهای امنیتی اولیه همواره کنترل دسترسی به منابع مختلف و بالعکس بوده است. عملکرد ساز و کار مزبور بدین شکل است که زیر برنامه هایی (اسکریپت هایی) که در یک صفحه اینترنتی اجرا می شوند، نمی توانند صفحات دیگری را از میزبان دیگری غیر از میزبان خود درخواست کنند. این محدودیت از جمله ویژگی های جدید HTML5 محسوب نمی شود و از طریق مشخصه «اشتراک گذاری منابع بین منشاءهای مختلف» (Cross-origin Resource Sharing) قابل تنظیم است. شایان ذکر است که این مشخصه متعلق به مجمع جهانی وب (W3C) می باشد. هرچند جزئیات این تنظیم در شرایط مختلف تفاوت هایی دارد، اما هر طور که باشد نحوه استفاده برنامه های فلش از فایل crossdomain.xml برای تنظیم سطح دسترسی در آن یکسان است. پدیدآورندگان برنامه های مبتنی بر وب می توانند تعیین کنند کدام دامنه ها قابل اطمینان هستند و دسترسی به آنها مجاز است. HTML5 قابلیت جدیدی به نام «ارسال پیام ما بین صفحات» دارد که امکان ایجاد ارتباط بین صفحاتی از دامنه های مختلف را از طریق یک رابط کاربری برنامه نویسی (API) فراهم می آورد. این قابلیت به طور کلی قابلیتی است که مربوط به رایانه های سرویس گیرنده می شود و هیچ درخواست ارتباطی در آن از طریق رایانه سرویس دهنده (سرور) منتقل نمی شود. هنگامی که قابلیت مذکور با قابلیت ذخیره سازی در رایانه سرویس گیرنده ترکیب شود، امکان به اشتراک گذاری منبعی از اطلاعات در یک رایانه سرویس گیرنده را برای برنامه های مبتنی بر وب در نقاط مختلف فراهم می آورد.
البته توجه به این نکته نیز مهم است که کدهای مخرب می توانند از نقاط ضعف برنامه هایی که وظیفه شان ارسال پیام در سایت هاست، بهره سوء ببرند و لذا باید گفت ارسال پیام مابین صفحات نیز پروسه ای است که می تواند مورد سوء استفاده واقع شود. از این رو هم چک کردن مأخذی که داده ها از آنجا می آیند و هم چک کردن فرمت آن داده ها بی نهایت مهم است.

تأیید داده ها

از زمانی که امنیت برنامه های رایانه ای مطرح شد، تأیید داده های ورودی و کدگذاری داده های خروجی همواره جزء اصلی و لاینفک برنامه نویسی خوب بوده است. حتی قبل از آنکه بحث امنیت مطرح شود، تأیید داده ها غالباً به عنوان بخشی از برنامه نویسی به شمار می رفت. بنابراین جهت ایجاد برنامه هایی با سطح امنیت بالا در فضای HTML5، توجه به این نکته، امری ضروری و چه بسا حیاتی باشد.
اصول HTML5 اساساً به گونه ای است که خود به تأیید داده ها کمک می کند. سابقاً آن دسته از پدیدآورندگان برنامه های مبتنی بر وب که از قابلیت «نشانه گذاری اشیاء جاوا اسکریپت» (Javascript Object Notation) استفاده می کردند، در صورتی که داده هایشان مورد تأیید قرار نگرفته بود، مجبور بودند میزان ریسک ورود کد خارجی را تعیین کنند. قابلیت فوق هم به نوبه خود از تابع eval استفاده می کرد. از آنجا که HTML5 به خودی خود از این قابلیت (نشانه گذاری اشیاء جاوا اسکریپت یا به اختصار JSON) پشتیبانی می کند و توابع نیز در JSON تجزیه نمی شوند، مشکل فوق تا حدی برطرف شده است.
از طرف دیگر ویژگی srcdoc امکان درج محتویاتی از منابع نامطمئن را در یک آی فریم (iframe) برای توسعه دهندگان وب فراهم می آورد. پر واضح است که این قابلیت اگر بدون هیچ محدودیتی مورد استفاده قرار گیرد، خطراتی را از لحاظ امنیتی در پی خواهد داشت.
یکی دیگر از ویژگی های جدید در HTML5 ویژگی «الگو» (pattern) است. این ویژگی برای تأیید داده ها با توجه به عبارات با قاعده است. (عبارات با قاعده که با علامت اختصاری regex یا regexp هم نشان داده می شوند برای تطابق دقیق و قابل انعطاف کلمات یا کاراکترها در متون به کار برده می شوند). از آنجا که خود عبارات با قاعده توسط مرورگر تأیید می شوند، هر هکری با دستکاری در ویژگی مذکور می تواند کاری کند که مرورگر با تجزیه یک عبارت با قاعده پیچیده مواجه شود و رایانه سرویس گیرنده، برخی از سرویس های (امنیتی) را نادیده بگیرد. تأیید داده ها به ترتیبی که گفته شد (با عبارات با قاعده) صرفاً در رایانه سرویس گیرنده صورت می گیرد و کدهای مخرب می توانند به راحتی از سد این نوع تأیید بگذرند.

حریم خصوصی

بسیاری از ویژگی های HTML5 مربوط به حریم شخصی کاربر می شود. مثلاً قابلیت ذخیره سازی در رایانه سرویس گیرنده، امکان ذخیره سازی را بیش از کوکی ها فراهم می آورد، اما از آنجا که رایانه های سرویس گیرنده، قابل اطمینان نیستند، توسعه دهندگان وب باید مراقب اطلاعاتی باشند که در این محدوده ذخیره می کنند. این گفته به خصوص زمانی صدق می کند که از دیدگاه رعایت استانداردها و قوانین به مسئله نگاه کنیم. اگر برنامه هایی که برای ذخیره سازی اطلاعات کاملاً خصوصی افراد (PII) همچون اطلاعات کارت اعتباری آنها به کار می روند، از قابلیت فوق استفاده نکنند، به بهترین شکل سرویس دهی می شوند. رابط کاربری برنامه نویسی (API) با موقعیت جغرافیایی یکی دیگر از مسائلی است که در زمینه حریم شخصی می تواند مشکل ساز شود و باید با دقت بالا به آن پرداخت. (رابط کاربری برنامه نویسی با موقعیت جغرافیایی یا GeoLocation API فن آوری است که امکان تشخیص موقعیت جغرافیایی کاربر را به سایت های مورد اطمینان می دهد)

کارکُن های وب

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

کشیدن و رها کردن

در حال حاضر یکی از تهدیدات رایج در برنامه های مبتنی بر وب، دزدی با کلیک یا همان سرقت اطلاعات شخصی کاربران از طریق اینترنت است. در این نوع سرقت کاربر فریب خورده و وارد صفحه ای می شود که از هر لحاظ شبیه به صفحه ای است که قصد رفتن به آن را دارد، غافل از اینکه این صفحه متعلق به سارقان اینترنتی است و هر کلیک روی دکمه ارسال اطلاعات در آن اطلاعات کاربر را برای سارقان اینترنتی ارسال خواهد کرد. سابقاً این نوع سرقت عمدتاً به آن دسته از فرم های اینترنتی محدود می شد که رایانه سرویس دهنده با توجه به پارامترهای درخواست، برخی از فیلدهای آنها را از قبل پر می کرد. خطر مذکور در HTML5 می تواند به شکل مخرب تری ظاهر شود چرا که در این نسخه از HTML برای پر کردن فرم های اینترنتی می توان از ویژگی «کشیدن و رها کردن» استفاده کرد. به موجب این ویژگی احتمال از پیش پر شدن برخی از فیلدهای یک فرم توسط کدهای مخرب وجود دارد؛ وقتی محتویات این فلیدها کشیده و مثلاً در فیلد دیگری رها شوند، می توانند خود به خود به سرقت اینترنتی اطلاعات بیانجامند.

اجرای کد در پنجره های ایمن (سند باکس)

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

سخن آخر

هر چند نقص های زیربنایی نسخه های قبل HTML که تهدیدی اساسی برای برنامه های تحت وب به شمار می روند در نسخه HTML5 نیز وجود دارند، اما دست کم خود HTML را می توان از تهدیدات محفوظ داشت. بنابراین دلیلی ندارد که از فناوری جذاب HTML روی برگردانیم؛ هر چه باشد این فناوری امکان انجام اقداماتی ارزشمند را برای توسعه دهندگان وب فراهم می آورد که می توانند بسیار تأثیرگذار باشند.
منبع : نشریه بزرگراه رایانه


<-- این مطلب را با دوستان خود به اشتراک بگذارید
Facebook stumbleupon Digg Delicious Email Twitter