امنیت زبان جاوا اسکریپت
جاوا اسکریپت

امنیت زبان جاوا اسکریپت

مقدمه

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

امنیت در زبان جاوا اسکریپت

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

خطرات تهدید کننده امنیت زبان جاوا اسکریپت چیست؟

بیایید با مواردی از آسیب‌پذیری امنیت زبان جاوا اسکریپت شروع کنیم که اغلب در توسعه front-end رخ می‌دهند:

• حمله xss

حملات cross-site scripting یا به اختصار xss به معنای اسکریپت نویسی متقابل میباشد، حمله ای ست یک نوع رایج از حمله تزریق کد (code injection)  است که برنامه‌های تحت وب را با تشخیص آسیب‌پذیری آن‌ها و تزریق کد مخرب، هدف قرار می‌دهد. به طوری که هکر با استفاده از اسکریپت سمت مرورگر‌، یک کد مخرب را از طریق یک برنامه تحت وب برای قربانی ارسال می‌کند. آن‌ها معمولا این کار را با دور زدن سیاست‌های وب‌سایت به دست می‌آورند. در نتیجه، هکرها می‌توانند به اطلاعات کاربری دسترسی داشته باشند و اقدامات مختلفی را از طرف کاربر انجام دهند.

• حمله CSRF 

حملات CSRF یا cross-site request forgery، کاربران احراز هویت شده را مورد هدف قرار می‌دهند (کسانی که وارد حساب کاربری خود در وب سایتی شده اند). افرادی که قبلا مورد اعتماد وب‌سایت یا برنامه‌ها قرار گرفته‌اند. هکرها با استفاده از اطلاعات دریافت شده از کوکی‌‌های مرورگر ، به حساب کاربری افراد دسترسی پیدا می‌کنند. به همین دلیل از طریق حساب کاربری‌شان، اقداماتی را بدون اطلاع آن ها انجام می‌دهند. نام دیگر حملات CSRF، حملات از طریق یک کلیک می‌باشد.

• نفوذ در کتاب‌خانه‌ها و فریم ورک های جاوا اسکریپت 

در توسعه front-end، ما همواره از ابزارها و کتاب‌خانه‌های متفاوتی استفاده می‌کنیم. از طریق این ابزارها و کتاب‌خانه‌ها می‌توان امنیت زبان جاوا اسکریپت را مورد هدف قرار داد.

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

1- Integrity را بررسی کنیم : 

توسعه دهندگان front-end از تگ‌های <script> برای وارد کردن کتاب‌خانه‌ها استفاده می‌کنند. اما این کار می‌تواند خطرات امنیتی را به همراه داشته باشد؛ چرا که ممکن است فایل منبع آن کتابخانه توسط شخص ثالث دستکاری شود.    
به عنوان یک اقدام امنیتی برای این کار، می‌توانیم از کد یکپارچگی (که به عنوان SRI شناخته می‌شود) استفاده کنیم. مثلا برای وارد کردن جی کوئری میتوانیم به شکل زیر اقدام کنیم : 

 <script 
	src="https://code.jquery.com/jquery-3.3.1.slim.min.js"  
	integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"  
	crossorigin="anonymous">  
</script>

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

2- برای جلوگیری از آسیب‌پذیری به NPM ، تست‌های مکرر انجام دهیم :  

ما می‌توانیم از دستور “ npm audit ” برای شناسایی نقطه ضعف‌ها استفاده کنیم. انجام این کار باعث می‌شود آسیب‌های موجود تا حد امکان گزارش شود و اصلاحاتی برای آن‌ها فراهم گردد.
زمانی که این عمل را به صورت خودکار درآوریم، مشکلات کم‌تر شده و رفع آن‌ها ساده‌تر می‌شود.  
یک راه حل این است که می‌توانیم NPM را در CI خود برای هر درخواست pull به منظور شناسایی آسیب پذیری‌ها اجرا کنیم. با این کار می‌توانیم از بروز آسیب‌پذیری جلوگیری کنیم. 


اما آسیب‌هایی وجود دارد که  نیاز است یک برنامه‌نویس برای حل آن‌ها به صورت دستی وارد عمل شود.  
اخیرا گیت‌هاب یک ربات به نام Dependabot را معرفی كرده است تا وابستگی‌های NPM را به صورت خودكار اسكن كرده و خطرات را از طریق ایمیل به شما اطلاع ‌دهد.  

3- پچ‌های امنیتی و به روز رسانی‌ها را فعال نگه داریم:  

نمادهای  ^  یا ~  نسخه خودکار برای ورژن‌های جزئی و پچ را نشان می‌دهد. (بسته به نماد آن‌ها)  
از آنجا که بیشتر کتاب‌خانه‌های شخص ثالث آسیب پذیری‌های رفع اشکال را به عنوان bump نسخه پچ منتشر می‌کنند، حداقل فعال کردن به روزرسانی خودکار پچ به کاهش خطرات امنیتی کمک می‌کند.  
به روزرسانی خودکار پچ، به کاهش خطرات امنیتی کمک می‌کند؛ چرا که اکثر کتاب‌خانه‌های شخص ثالث آسیب پذیری‌های رفع اشکال را به عنوان  bump نسخه پچ منتشر می‌کنند.

4-  اعتبارسنجی‌ها را برای جلوگیری از نفوذ انجام دهیم :

یک قاعده کلی این است که نباید هرگز به اعتبارسنجی‌های سمت کاربر متکی باشیم؛ چرا که هکرها می‌توانند آن‌ها را دست‌کاری کرده و تغییر دهند. به عنوان مثال، اگر در قسمت کامنت هر چیزی را با نقل قول </script><script> تایپ کنیم، آن نقل قول‌ها با دو  <</script>><<script>> جایگزین می‌شوند. بنابراین کد جاوا اسکریپت وارد شده اجرا نخواهد شد. به این اسکریپت بین سایتی (XSS) می‌گویند.

5- Strict mode را روشن نگه داریم:  

روشن بودن strict mode باعث می‌شود، نوشتن کد نا امن محدود شود. فعال کردن آن هم بسیار ساده است. فقط کافی است دستور زیر را در خط اول فایل‌های جاوا اسکریپت نوشته شود:  
use strict

6-  کد خود را lint کنیم:

linterها تجزیه و تحلیل ایستایی را بر روی کد ما انجام می‌دهند. این کار باعث می‌شود کیفیت بیشتر شده و از دام‌های مشترک جلوگیری شود. فرایند لینتینگ منجر به کاهش خطرات امنیتی می‌شود. JsLint ، JsHint ، EsLintابزارهای مشهوری هستند که برای جاوا اسکریپت استفاده می‌شوند. هم‌چنین می‌توان از ابزارهایی مانند SonarCloud  نیز  برای شناسایی کد و آسیب پذیری‌های امنیتی شناخته شده استفاده کرد.  

7- کدهای خود را کوچک و به هم ریخته کنیم:

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

سخن پایانی  

امنیت زبان جاوا اسکریپت بسیار مهم است؛ چرا که زبان جاوا اسکریپت محبوبیت زیادی بین کاربران دارد. با حداقل ابزارها می‌توانیم کدهایمان را ایمن کرده و از حملات رایج موجود جلوگیری کنیم.

 

نویسنده مقاله

درباره نویسنده

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

راه های ارتباطی با نویسنده

این وب اپلیکشن در آذرماه 1401 توسط ابوالفضل برزگر توسعه یافته است