بلاگ
گیگبازی با ویندوز
حمله تزریق اسکریپت، با یک بازی آنرا را یاد بگیریم!
در سه پست گذشته وبلاگ حمله XSS یا تزریق اسکریپت چیست؟، مثالهایی از حملات XSS و جلوگیری از حملات XSS به بررسی حمله تزریق اسکریپت یا XSS، چندین نمونه از آنها و راههای مقابله و جلوگیری از حملات تزریق اسکریپت پرداختیم.
حملات XSS، یا تزریق اسکریپت، یکی از روش های نفوذ پر استفاده توسط هکرها میباشد. در این نوع حمله، هکر تلاش میکند تا از طریقی، در صفحهی وب اسکریپت خود را اجرا کند. هدف نهایی، اجرای این اسکریپت تزریق شده توسط تمام کاربرانیست که آن صفحهی مورد نظر را مشاهده میکنند. البته گونههای دیگری از این حمله XSS وجود دارد که در پستهای قبلی معرفی کردم. اما اینجا میخواییم با استفاده از یک بازی جالب که گوگل آماده کرده، جای یک هکر بشینیم و به ۶ سایت متفاوت نفوذ کنیم و کد Javascript خودمون رو اجرا کنیم.
جلوگیری از حملات XSS
در دو پست گذشته وبلاگ حمله XSS یا تزریق کد چیست؟ و مثالهایی از حملات XSS به بررسی حملات تزریق کد XSS و چندین نمونه از آنها پرداختیم. در این پست به بررسی راههای جلوگیری از حملات XSS میپردازیم.
بطور کلی، همانند کلیهی حملههای هک و نفوذ، هیچگونه راه حل ۱۰۰ درصدی برای جلوگیری از حملات XSS وجود ندارد. اما میتوان با در نظر گرفتن موارد عموما ساده، جلوی عمدهی روشهای مورد استفاده توسط هکرها برای نفوذ را گرفت. هر دو حمله Stored XSS و Reflected XSS را میتوان با اعتبارسنجی (Validation) و گریختن (Escaping) مناسب در سمت سرور (Server-Side) دفع کرد. برای دفع حملات DOM Based XSS از روش های دیگری باید استفاده کرد که در آینده و در پستی جداگانه به آنها خواهیم پرداخت. در ادامه این روشها را باهم بررسی خواهیم کرد.
مثالهایی از حملات XSS
همانطور که در پست حمله XSS یا تزریق کد چیست؟ گفته شد، روشها و اهداف حملات تزریق کد، هیچگونه محدودیتی ندارند. هر هکر با توجه به نبوغش، و همچنین تسلط بر حفرههای امنیتی پایه، تلاش میکند روشهای جدیدی برای انجام حمله ابداع کند. اما میتوان روشهای و اهداف پراستفاده را بررسی و با آنها مقابله کرد. با بررسی روشهای متداول حملات XSS ، دید خوبی نسبت به حفرههای موجود میتواند بدست آورد. با این دید میتوان در هنگام تولید و توسعه اپلیکیشنهای تحت وب، این حفرهها و آسیب پذیریها را در اپلیکیشن بخوبی بشناسیم و با استفاده از راهحل های ساده و عموما پیشپا افتاده با آنها مقابله کنیم.
در ادامه به بررسی تعدادی از نمونههای حملات XSS میپردازیم و در نهایت در پستی دیگر راههای مقابله با آنها را بررسی خواهیم کرد.
حمله XSS یا تزریق کد چیست؟
حملهی تزریق کد از طریق وبسایت یا Cross-Site Scripting که بصورت مخفف به آن حمله XSS (بدلیل شباهت مخفف به CSS از X که همان Cross یا ضربدر هست استفاده میشود) گفته میشود، یکی از پر استفادهترین روشهای در دسترس هکرها میباشد. طبق تحقیقی که در سپتامبر ۲۰۱۵ انجام شد۱، براساس درصد، این نوع حمله پراستفاده ترین روش توسط هکرها برای نفوذ به اپلیکیشن های تحت وب بوده است. (شکل زیر)
یک شروع تازه!
یک شروع تازه! حدود یک سال پیش بود که این وبلاگ رو شروع کردم. برنامه های زیادی توی ذهنم بود که انجام بدم. از جمله نوشتن یه سری آموزش AngularJS نسخهی ۱ که تا حدودی هم کاملش کردم. اما به دلایلی همچون ارایه نسخهی ۲ از این فریمورک محبوب اون آموزش ادامه پیدا نکرد. و اینجا هم میخوام پایان آموزش رو اعلام کنم و بخش های دیگری ازش نوشته نمیشه. به دوستان هم توصیه میکنم به سراغ فریمورکهای دیگه برن. بخاطر سرعت خیلی زیادی که این چند سال توی توسعهی وب شاهدش هستیم، متاسفانه انگولار نسخهی ۱ دیگه به تاریخ پیوسته.
این روزها هم سرم به Nodejs و فریمورکهای خیلی خوب اون مثل Express و Socket.io گرم هست. با دیتابیسهایی مثل MongoDB و Redis هم دارم کار میکنم. و در نهایت هم با چندتا وب سرور جدید و کارآمد مثل Nginx و Lighttpd هم دارم کار میکنم. کلا سرم شلوغ شده. همش هم بخاطر دوتا پروژهی شخصی و جدید هست که دارم کار میکنم و به زودی همینجا راجع بهشون مینویسم.
از حالا به بعد، سعی میکنم هفتگی تکنولوژی جدیدی که تو طول اون هفته یاد گرفتم رو راجع بهش بنویسم. هر موقع هم با مورد جدیدی و جالبی مواجه شدم حتما اینجا ازش مینویسم. شما هم اگر مورد جالبی دیدید، یا مطلبی مد نظرتون بود بهم ایمیل بزنید حتما راجع بهش مینویسم.
دوره آموزش AngularJS – کنترلگرها (کنترلر AngularJS)
دوره آموزش AngularJS – کنترلگرها (کنترلر AngularJS)
در بخش قبلی این دوره آموزشی، مبانی، از شما خواستم تا AngularJS را به چشم یک فریمورک جاوااسکریپت نگاه نکنید. چرا؟ چون AngularJS قبل از آنکه یک فریمورک جاوااسکریپت باشد، آمده است تا به HTML قابلیتهای جدید اضافه کند. ولی، داستان AngularJS در همینجا به پایان نمیرسد و بخش مهمی از هر اپلیکیشنی که با انگولار نوشته شده باشد را، Javascrript تشکیل میدهد. اگر در طی بخش مبانی از خود میپرسیدید، پس کی به کد زدن واقعی میرسیم، این بخش مخصوص شماست. الان وقت آن است که جاوااسکریپت بنویسیم.
عمومیترین راه برای تقویتکردن لایهی نمایش (View Layer) اپلیکیشن انگولارجیاس با کمک Javascript، استفاده از کنترلگر (Controller) است. سادهترین راه نوشتن یک کنترلگر نوشتن آن با روش آشنای نوشتن یک تابع سازنده (Constructor Function) است.
دوره آموزش AngularJS – مبانی
دوره آموزش AngularJS – مبانی بخش اول
AngularJS یک فریمورک اپلیکیشن سمت-کاربر است که HTML را بازتعریف میکند.
اگر شما یک توسعهدهندهی وب باشید، حتما AngularJS را با دیگر فریمورکها و کتابخانههای معروف جاوااسکریپت دیگر، همچون jQuery، Knockout، Backbone، Ember و حتی React مقایسه کردهاید. بطور مشابه، اگر اطلاعاتی راجع به توسعه رابط کاربری گرافیکی داشته باشید، حتما با الگوهای MVC، MVVM و یا MVW آشنایی دارید. دانستن این نکات طبیعی میباشد، اما میتواند درک شما از AngularJS را تحت تاثیر قرار دهد. در نتیجه در این بخش، دوره آموزش AngularJS – مبانی، توصیه میشود که به AngularJS تنها به شکل یک فریمورک جاوااسکریپت نگاه کنید. کلیه دانش خود در مورد طراحی رابط گرافیکی، الگوهای طراحی و دیگر فریمورکها و کتابخانهها را فراموش کنید. به مطالب این بخش نگاه کنید تا متوجه شوید AngularJS چگونه عمل میکند. یا بهتر بگویم، آنرا تنها به شکل یک توسعهدهندهی HTML ببینید.
در این بخش، سه ساختار اصلی و پایهی AngularJS را فراخواهیم گرفت. عبارات (Expressions)، رهنمودها (Directives) و حوزهها (Scopes). البته قبل از توضیح این سه ساختار اصلی و پایه، به نحوهی اضافه نمودن AngularJS به پروژهها و راهاندازی آن میپردازیم.
دوره آموزش AngularJS – معرفی
دوره آموزش AngularJS – معرفی
زبان نشانهگذاری فرامتن (HTML – HyperText Markup Language) در سال ۱۹۹۰ توسط Tim Berners-Lee، ساخته شده. در ابتدا HTML تنها برای ساخت صفحات وب استاتیک استفاده میشد که با استفاده از فراپیوند (Hyperlink)ها میتوانستیم این صفحات را به هم متصل کنیم و در بین آنها بگردیم. پس از آن در سال ۱۹۹۳، واسط دروازهی مشترک (CGI – Common Gateway Interface) معرفی شد، که این امکان را میداد تا صفحات پویا (Dynamic) را که در سمت سرور ساخته میشدندبه کاربر ارایه شوند. در نتیجه زبانهای جدیدی همچون پرل (Pearl)، پیاچپی (PHP)، جاوا (JAVA)، ایاسپی (ASP) و.. برای تولید این صفحات پویا ارایه شدند.
بدلیل اینکه اینگونه زبانها و تکنولوژیهای جدید، تنها معطوف به سمت سرور بودند، هنوز تولید برنامههای تحت وبی که بتواند تجربهای شبیه به برنامههای دسکتاپی ارایه دهند ناممکن به نظر میرسید. البته در این بین ارایه Flash و Silverlight توانست تولید برنامههای تحت وب به تجربه کاربری مناسبی را با استفاده از پلاگینها ممکن سازد.
اما، در نهایت راهکاری اصلی و مناسب بدون هیچگونه پلاگین اضافهای با گسترش قالبیتهای HTML، CSS و Javascript بوجود آمد. قابلیتهایی که اجازه ارایه تجربهی کاربری بسیار مناسبی در برنامههای تحت وب میدادند.
AngularJS جزوی از همین موج نو کتابخانهها و فریمورکهای است که با استفاده از آن تولید و توسعهی برنامههای تحت وب با قابلیت توسعهی سریع، منعطف، قابل نگهداری و قابل آزمایش اماکن پذیر شده است.
معرفی AngularJS
در سال ۲۰۰۹ این فریمورک توسط Miško Hevery و Adam Abrons ساخته شد. اما ظهور آن، در سال ۲۰۱۰ بود. زمانیکه Hevery بر روی پروژهی Google Feedback، کار میکرد. این پروژه در نهایت با ۱۷ هزار خط کد به پایان رسید. اما گروه از سرعت تولید و همچنین تعداد خط کدهای آن راضی نبودند. برای همین Hevery شرط بست که این پروژه را با فریمورک خودش در طی دو هفته بازنویسی میکند. بعد از سه هفته و تنها با ۱۵۰۰ خط کد او پروژه را آماده کرد. اینروزها فریمورک او در بیش از ۱۰۰ پروژهی گوگل مورد استفاده قرار میگیرد. نام فریمورک هم توسط Abrons، بدلیل علامت شروع تگ در HTML، یعنی “<” انتخاب شد.
دوره آموزش AngularJS
مختصری راجع به دوره آموزش AngularJS
دوره آموزش AngularJS دورهای برای آشنایی با فریمورک AngularJS از سطح مبتدی تا متوسط است. در طی دوره آموزش AngularJS از سادهترین مفاهیم این فریمورک شروع خواهیم کرد و گام به گام با ویژگیها، امکانات و نکات تولید برنامهی تک صفحهای (SPA – Single Page Application) با الگوی MVC آشنا خواهیم شد.
برنامهی تک صفحهای (SPA) چیست؟
برنامهی تک صفحهای که از این به بعد به آن SPA میگوییم، برنامهی تحت وب است که کاربر برای استفاده از آن نیازی به رفت و آمد میان صفحات مختلف ندارد. یعنی با یکبار بارگذاری صفحه، کلیهی درخواستهای کاربر در همان صفحه بدون هیچگونه رفرش صفحه انجام میشود. بهترین نمونههای اینگونه از برنامهها را میتوان سرویس ایمیل Gmail و Outlook شمرد.
الگوی MVC چیست؟
MVC مخفف سه کلمه Model (مدل ) و View(نمایشگر) و controller( کنترلگر) است. هدف از این الگو در برنامهنویسی جداسازی بخش منطق برنامه از بخش نمایش برنامه هست. این جداسازی مزایای بسیاری برای پروژههای نیمهبزرگ و بزرگ برنامهنویسی به ارمغان میاورد که سختی اولیهی آشنایی و برنامهنویسی در چارچوب این الگو را کاملا توجیه مینماید.
سرفصلهای دوره آموزش AngularJS
برای دوره آموزش AngularJS سرفصلهایی مطابق فهرست زیر در نظر گرفته شده. اما امکان تغییر این فهرست و کم یا زیاد شدن سرفصلی وجود دارد.
- معرفی (Introduction)
- مبانی (Basics)
- کنترلگرها (کنترلر Controller)
- حوزهها (اسکوپ Scope)
- مجموعهها ( کالکشن Collection)
- ماژولها (Module)
- Dependency Injection
- سرویسها (Service)
- فیلترها (Filter)
- دایرکتیوها (Directive)
- حوزههای دایرکتیو (Directive Scope)
- مسیریابی (Routing)
- HTTP
- بخش پایانی
سخن پایانی
پس از انجام چندین پروژهی مختلف با فریمورک AngularJS و با توجه به اینکه منبع مناسبی به زبان پارسی برای آموزش این فریمورک بسیار محبوب و قدرتمند جاوااسکریپت وجود نداشت، تصمیم گرفتم تا تجربیاتم را در طی این مدت استفاده از این فریمورک در قالب دوره آموزش AngularJS به رایگان در اختیار برنامهنویسان و علاقهمندان پارسی زبان قرار بدهم. همچنین در نظر دارم، در پایان دوره آموزش AngularJS کلیهی مباحث این دوره را بصورت کاملتر در قالب دوره ویدیویی آموزش AngularJS منتشر کنم. در نتیجه اعلام نظرات شما دوستان دربارهی هر بخش این دوره در کاملتر شدن دوره و در نهایت دورهی ویدیویی تاثیر گذار خواهد بود.
لینکها
ماژول DFPlayer Mini و ارتباط با میکروکنترلر AVR
مدتی پیش برای پروژه الکترونیکی، لازم شد که یکسری فایل با فرمت MP3 رو پخش کنم. پروژه برپایه میکروکنترلر Atmega8 از خانواده AVR بود. برای همین به دنبال ماژولی بودم که بتونم با استفاده از میکروکنترلر ارتباط برقرار کنم و همچنین قابلیت اتصال با یک آمپلیفایر رو هم داشته باشه. در نهایت به ماژول DFPlayer Mini رسیدم که هم قابلیتهایی رو که میخواستم داشت و هم اینکه قیمتش (۳۴ هزار تومان – امسال) با پروژه سازگار بود.
قابلیتهای کلیدی ماژول DFPlayer Mini:
- پشتیبانی از دیکودینگ MP3 و WAV
- پشتیبانی از سمپلریتهای ۸KHz, 11.025KHz, 12KHz, 16KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz
- خروجی DAC (دیجیتال به آنالوگ) ۲۴ بیت
- پشتیبانی از سیستمفایل FAT16 و FAT32 تا حجم ۳۲ گیگابایت
- امکان استفاده از microSD و همچنین USB Memory بعنوان فضای ذخیره سازی
- دو روش کنترل با استفاده از ارتباط سریال و AD key control
- آمپلیفایر داخلی ۳W
- پشتیبانی از ۳۰۰۰ فایل موسیقی در فولدر ریشه (root)
- پشتیبانی از ۱۰۰ فولدر و در هر فولدر حداکثر ۳۰۰۰ فایل موسیقی
- پشتیبانی از صدای پسزمینه (inter-cut advertisements)
- ۳۰ سطح بلندی صدا قابل تغییر و ۵ سطح اکولایز قابل تغییر