ایجاد: ۱۲:۵۹ ۱۳۹۴/۴/۱۰
ویرایش: ۱۴:۱۲ ۱۳۹۴/۴/۱۰

یادداشت‌ها

»

امنیت در انگولر جی اس

قبلا انگولر جی‌اس را معرفی کردم؛ یک فریم‌ورک جاوا اسکریپتی قدرتمند و برتر برای تولید اپلیکیشن‌های کلاینتی.

تزریق کوئری (SQL injection)

زمانی که صحبت از امنیت یک فریمورک کلاینتی می‌شود، فقط در مورد حملات کلاینتی (مثل XSS) باید صحبت کنیم لذا ممکن است بگویید که حملات تزریق کد که مربوط به دیتابیس سرور است، ربطی به سمت کاربر ندارد.

اما اگر با WebSQL آشنا باشید، می‌دانید که این تکنولوژی امکان داشتن یک دیتابیس در سمت کلاینت و کار با آن به وسیله کوئری SQL را فراهم می‌کند. هرچند این تکنولوژی سال‌هاست که تغییر چندانی نکرده اما همچنان توسط بسیاری از مرورگرها (از جمله مرورگر فایرفاکس، کروم، اپرا، سافاری، مرورگر اندروید و ...) پشتیبانی می‌شود و برای یک اپلیکیشن کلاینتی (که مثلا با انگولر جی اس یا فریمورکی دیگر نوشته شده باشد) یکی از گزینه‌های بسیار خوش‌دست است.

برای کار با WebSQL لازم است با زبان SQL و کوئری‌های آشنای Insert, Update, Delete و ... کار کنید منتها این بار با سمت کلاینت. لذا در هنگام اجرای یک کوئری SQL که حداقل یکی از پارامترهای آن از کاربر گرفته شده باشد، طبیعی است که امکان وقوع SQL Injection وجود خواهد داشت.

روش پیشگیری: مطمئن‌ترین راه برای جلوگیری از این حمله، همان راهی است که برای PHP و دیگر زبان‌های سمت سرور هم توصیه می‌شود؛ پارامتری کردن ورودی‌ها. (توضیح بیشتر و مثال)

تزریق کد (XSS)

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

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

در انگولرجی‌اس می‌توان یک عبارت منطقی (expression) بین {{دو کروشه}} درج کرد که توسط جاوا اسکریپت محاسبه و به html برای سورس صفحه تبدیل شود اما برای این عبارت منطقی محدودیت‌هایی تعریف شده تا امنیت بالاتر رود. مثلا امکان دسترسی به متغیرهای عمومی (مثل window)، امکان درج عبارات کنترلی (مثل حلقه‌ها و استثناءها)، امکان تعریف تابع و ... وجود ندارد. (یک مقاله تخصصی در این مورد)

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

نکته پایانی مهم: هدف از اکثر حملات، دزدیدن کوکی احراز هویت و ارسال آن به نفوذگر است. لذا برای امنیت بالاتر برنامه لازم است بجای استفاده از روش محدود و ضعیف «کوکی یا سشن» برای احراز هویت، از روش مستحکم و مدرن token base authentication (همچون jwt) استفاده کنید که در مورد آن قبلا نوشتیم.

[این مطلب در آینده تکمیل خواهد شد...]


یادداشت‌های مرتبط
  1. API چیست؟
  2. ارتقاء امنیت وردپرس
  3. بکارگیری pushState و replaceState در برنامه نویسی سایت های ای جکسی
  4. ساخت اپلیکیشن های کلاینتی با AngularJS گوگل
  5. آشنایی با دو قابلیت جدید مرورگرها: WebRTC و ضبط صدا و تصویر!
  6. لیست مواردی که برای امنیت برنامه PHP لازم است چک شود
  7. کنترل رویدادهای صفحه کلید، موس و صفحات لمسی
  8. انواع روش های شناسایی و احراز هویت کاربران یک صفحه وب
  9. پیشگیری از حملات جعل درخواست بین سایتی
  10. موثرترین روش برنامه نویسان برای مقابله با کی لاگر ها
  11. حملات ضدامنیتی XSS یا تزریق کد
  12. تنظیم اچ تی ام ال پیوریفایر
  13. کشف فونت های نصب شده در کلاینت

مدیریت

نام وسیله

اعتبار ورود

نام کاربری

رمز عبور

رمز یکبارمصرف

... لیست تمام یادداشت‌ها

تبلیغات

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

دامنه‌هایی که می‌تواند مصرف تخصصی داشته باشد:
AnyDesk.ir, Firebase.ir, Angularjs.ir, 9px.ir alAdmin.ir, iQore.ir notion.ir, 3dn.ir,

دامنه‌هایی که می‌تواند مصرف فرهنگی/مذهبی داشته باشد:
mavaez.ir, 2aha.ir, babolelm.ir, mahjoor.ir

دامنه‌هایی که می‌تواند مصرف شخصی/عمومی داشته باشد:
azizami.ir, 90blog.ir