تبلیغات
مقالات آموزشی برنامه نویسی و شبکه

سه اصل مهم در برنامه نویسی که همیشه باید به یاد داشته باشید

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

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

البته نمی خوام بگم قیمت پروژه های ASP واسه اینه که ما داریم چیزای اضافی می سازیم. بخشی از قیمت به دلیل اینه که ما از 0 همه چیز رو می سازیم و بخش دیگر مسئولیت پروژه است. مثلا وقتی شما دارید یک پروژه تراکنش های ارزی-ریالی تمام خودکار می نویسید، مطمئنا مسئولیت خیلی زیادی رو به دوش کشیده اید، هر گونه باگ امنیتی مساوی است با میلیون ها تومان ضرر مالی برای مشتری شما پس باید خیلی خیلی وقت بذارید تا هیچ باگی روی نرم افزار وجود نداشته باشه. کلیه محاسبات دقیق و بی نقص باشن و هزاران نگرانی دیگر ...

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

نوشته شده در تاریخ سه شنبه 4 آبان 1395    | توسط: ح.م    | طبقه بندی: مهندسی نرم افزار، آموزش ASP.NET،     | نظرات()


دانلود فایل های آپدیت ویندوز 8.1

دیروز خواستم روی ویندوز 8.1 ویژوال استودیو 2015 نصب کنم؛ ارور داد که باید ویندوزتون اپدیت بشه. از طریق بخش آپدیت خود ویندوز 8.1 اقدام کردم ولی آپدیت های مورد نیاز جهت نصب ویژوال استودیو روی ویندوز 8.1 رو نصب نکرد.

برای نصب ویژوال استودیو 2015 روی ویندوز 8.1 چکار کنم ؟

بهترین راه برای نصب ویژوال استودیو 2015 روی ویندوز 8.1، دانلود فایل های آپدیت بصورت آفلاین و نصب آنها بصورت دستی روی ویندوزتونه.
برای دانلود فایل های آپدیت ویندوز 8.1 روی یکی از لینک های زیر کلیک کنید. سپس در صفحه ای که باز میشه روی Download کلید کنید، در پایان کافی است در صفحه جدید روی File Names کلیک کنید تا همه موارد انتخاب بشه، در پایان روی Next کلیک کنید تا دانلود فایل ها شروع بشه.
امیدوازم این مطلب بدردتون بخوره.

دانلود فایل های آپدیت آفلاین ویندوز 8.1 نسخه 64 بیتی

 

دانلود فایل های آپدیت آفلاین ویندوز 8.1 نسخه 32 بیتی

نوشته شده در تاریخ سه شنبه 4 آبان 1395    | توسط: ح.م    | طبقه بندی: سیستم عامل ها (ویندوز-مکینتاش-لینوکس)،     | نظرات()


آموزش ساخت کتابخانه (فایل dll) در سی شارپ

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

توجه نمایید که برای dll نمودن اشیاء آنها را درون یک کتابخانه قرار می دهد و کل کتابخانه را dll می نمایند، به همین جهت در ادامه مقاله به فایل dll کتابخانه می گوییم.
مقالات آموزشی دانشجویی برنامه نویسی و الکترونیک و شبکه
سوالی که پیش می آید این است که چگونه می توان یک کتابخانه در سی شارپ ایجاد نمود ؟

برای ساخت یک کتابخانه (فایل dll) کافی است درون ویژوال استودیو یک پروژه جدید از نوع Class Library بسازید و سپس همانند مثال زیر شیء مورد نظر خود را بسازید و در پایان پروژه خود را اجرا (run)  نمایید ...


پس از اجرای پروژه یک ارور مشاهده خواهید نمود که مهم نیست و بدین دلیل است که پروژه های از نوع Class Library امکان اجرا شدن را ندارند و با نمودن اجرای پروژه ، پروژه Build شده و فایل dll در مسیر پوشه debug ایجاد می شود که می توان فایل مورد نظر را از مسیر مذکور برداشت و به دوستان و همکاران تقدیم نمود

موفق باشید.
سایت آموزشی دانشجویی NetNic

نوشته شده در تاریخ دوشنبه 26 مهر 1395    | توسط: ح.م    | طبقه بندی: آموزش سی شارپ،     | نظرات()


آموزش نحوه دریافت داده با استفاده از Entity Framework

دریافت داده یکی از پر کاربردترین کارهای برنامه نویسان می باشد، شاید بتوان گفت "برنامه نویسی چیزی به جز بازی با داده ها نیست" و بنده کاملا به این جمله معتقدم ؛ زیرا اگر به نرم افزارهای اطراف خود به دقت توجه نمایید ، متوجه این نکته می شوید که همه نرم افزارها کاری به جز بازی با داده انجام نمی دهند، از این رو عملیات CRUD بین برنامه نویسان بسیار گفته می شود ، به طوری که اگر به صحبت های چند برنامه نویس گوش کنید احتمال شنیدن عبارت CRUD در بین جملات آنها بسیار زیاد می باشد...
CRUD چهار عمل اصلی است که روی داده ها انجام می شود و شامل CREATE ، READ (Retrieve) ، UPDATE و DELETE می باشد ، در نهایت بقیه کاری که در نرم افزارها ممکن است انجام شود،  عملیات های محاسباتی می باشد.
Entity Framework یک پترن بسیار جذاب برای برنامه نویسان می باشد که با بررسی دقیق آن متوجه می شویم که Context آن نوعی پترن با نام Unit Of Work می باشد. (برای اطلاعات بیشتر درباره این پترن بسیار جذاب می توانید به اینجا مراجعه نمایید)
در ادامه در این پست آموزشی درباره عملیات READ صحبت خواهیم نمود و دریافت اطلاعات از منبع داده (دیتابیس) با کمک Entity Framework را بررسی خواهیم نمود.

در Entity Framework توابعی برای دریافت اطلاعات وجود دارند که عبارتند از:
First - FirstOrDefault - Single - SingleOrDefault - Find - ToList

اولین نکته ای که می توان درمورد توابع فوق بیان نمود این است که اجرای این دستورات موجب اجرا یک کد SQL روی دیتابیس می شود و در نتیجه خروجی این توابع داده می باشد.
من به شخصه دوست دارم اسم این توابع را توابع اجرایی بنامم ، زیرا این توابع موجب اتصال به دیتابیس و اجرای یک کد SQL روی آن و دریافت اطلاعات از دیتابیس می شوند.
در توضیح بیشتر باید بیان نمایم که خروجی تمامی توابع Entity Framework الزاما داده نیست و بسیاری از توابع خروجی از نوع IQueryable می باشد ، IQueryable در اصل دستور SQL می باشد و بنابراین داده نیست و برای تبدیل شده به داده می بایست بوسیله یکی از توابع فوق روی دیتابیس اجرا شوند.
شاید بپرسید "خوب ، خروجی IQueryable به چه درد ما می خوره ؟"
در جواب باید خدمتتون عرض کنم که این نوع خروجی یکی از جاذبه های Entity Framework می باشد ، بطوری که شما می توانید چندین خروجی را با هم ادغام نمایید
به تکه کد زیر توجه نمایید :


در خط اول تکه کد بالا  از کانتکس Entity Framework یک شیء ایجاد کرده ایم.

در ادامه ملاحظه می نمایید که درون query1 و query2 و query3 داده ای وجود ندارد و همه آنها حاوی دستور SQL می باشند (نوع این اشیاء IQueryable است)

خاصیت جالب اشیاء IQueryable این است که می توانید روی آنها شرط جدیدی بگذارید و در نتیجه شیء جدیدی از نوع IQueryable ایجاد نمایید ، بدون اینکه سرباری روی سرور داشته باشید (تا وقتی روی اشیاء IQueryable کار می کنید و از توابع اجرایی بیان شده در ابتدای این مقاله استفاده نمی نمایید ، هیچ اتصالی به دیتبایس انجام نمی شود و در نتیجه هیچ سرباری روی سرور نخواهید داشت)

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

در کد فوق بنده در خط آخر به کمک تابع اجرایی ToList موجب اجرای دستور SQL موجود در شیء query3 بر روی دیتابیس شده ام و در نتیجه خروجی من از نوع داده است.

نکته جالب استفاده از IQueryable این است که Where های شما با هم AND می شوند و در اصل 2 دستور زیر با هم برابرند :



در کد فوق query2 و query3 با یکدیگر برابر می باشند.


حال که به اهمیت IQueryable اشاره ای داشتیم و تفاوت توابع غیر اجرایی مانند Where و OrderBy را با توابع اجرایی مانند ToList و First فرا گرفتید، بهتر است به موضوع اصلی این پست که تفاوت توابع اجرایی با یکدیگر است بپردازیم.

تابع First :
این تابع فقط در زمانی استفاده می شود که مطمئن باشید خروجی این تابع یک رکورد (یک شیء) یا بیشتر از یک رکورد می باشد ، بنابراین اگر خروجی نال باشد (هیچ رکوردی بر نگشته باشد) تابع Exception آزاد خواهد کرد.
معمولا به دلیل حساسیت بالای این تابع و امکان بروز خطا (Exception) خیلی کم از این تابع استفاده می نماییم.
دقت نمایید که این تابع معادل دستور TOP 1 در SQL می باشد و بنابراین در صورتی که خروجی شامل چندین رکورد می باشد این تابع اولین رکورد را برای ما برمی گرداند.

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

باید توجه داشته باشید که اضافه شدن OrDefault به اسامی توابع دلیل بر این مورد دارد که اگر خروجی تابع دارای هیچ داده (رکوردی) نباشد ، تابع مقدار پیش فرض که همانا مقدار نال (NULL) است را بر می گرداند.

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

به تکه کد زیر توجه نمایید:


در کد فوق در صورتی که من شرط if را قرار ندهم ، در زمان استفاده از شیء data جهت پر کردن لیبل ها ، در صورتی که خروجی تابع FirstOrDefault مقدار نال باشد ، شیء data حاوی مقدار نال بوده و با خطا مواجه خواهیم شد.
مقالات آموزشی دانشجویی برنامه نویسی و الکترونیک و شبکه


تابع Single :
این تابع تقریبا عملکردی مشابه تابع First دارد ، با این تفاوت که معادل دستور TOP 1 در SQL نمی باشد و بنابراین دیگر همانند تابع First در مقابل خروجی های بیش از یک رکورد ایمن نمی باشد و در این صورت خطا (Exceprion) آزاد می نماید.
به بیان دیگر می توان گفت معادل بوذن دستور First با دستور TOP 1  در SQL این قابلیت را به تابع First داده است که در صورتی که با چندین رکورد مواجه شد ، اولین رکورد آن را برگرداند و بنابراین اروری نخواهیم داشت ، ولی در تابع Single ما باید فقط و فقط یک رکورد خروجی داشته باشیم و کمتر یا بیشتر از یک خروجی موجب بروز خطا (Exceprion) در کد ما خواهد شد که اصلا با ذائقه برنامه نویسان جور نیست

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


تابع SingleOrDefault :
این تابع مشابه تابع Single می باشد ، با این تفاوت که در برابر عدم وجود خروجی مقاوم است و دیگر ارور نمی دهد و مقدار نال بر می گرداند ، ولی کماکان در برابر تعداد بیش از یک رکورد در خروجی ضعف دارد و خطا می دهد.
همچنین همانطور که قبلا بیان شد ، توصیه می شود قبل از استفاده از خروجی توابعی که درون اسمشان OrDefault وجود دارد ، ابتدا نال نبودن خروجی را بررسی نمایید.
به تکه کد زیر توجه نمایید :


تابع ToList :
این تابع برای دریافت لیستی از رکورد ها می باشد و تعداد رکورد های خروجی اصلا برایش مهم نیست، بدین معنی که بدون خروجی ، یک رکورد و یا چندین رکورد اصلا برای آن اهمیتی ندارد و خروجی را در قالب یک کالکشن از نوع List جنریک بر می گرداند که می تواند شامل آیتم هایی باشد و یا خالی باشد.
این تابع برای دریافت لیستی از داده ها مناسب می باشد و برای دریافت یک رکورد استفاده نمی شود.

به تکه کد زیر توجه نمایید:


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


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

تکه کد زیر طریقه استفاده از آن را نمایش می دهد:


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

این تابع بین برنامه نویسان حرفه ای از محبوبیت زیادی برخوردار است و تنها ایرادش این است که فقط بر اساس ستون PrimaryKey می توان روی خروجی شرط گذاشت و برای گذاشتن سایر شروط باید از تابع Where قبل از آن استفاده نمایید.

نکته دیگر توابع اجرایی در نحوه استفاده از آنان می باشد ، همه توابع اجرایی فوق را می توانیم بصورت زیر نیز استفاده نماییم :

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


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

نوشته شده در تاریخ پنجشنبه 22 مهر 1395    | توسط: ح.م    | طبقه بندی: آموزش Entity Framework،     | نظرات()


مشکل در ساخت نظرسنجی

محمد
20:30:03 یکم خرداد 1395
moradi1375@yahoo.com
نظرسنجی
با سلام.
ممنون از آموزش خوبی که برای ایجاد نظرسنجی
گذاشتید.
ولی من هر کاری کردم نتونستم درستش کنم.
میشه واضح تر مفهوم کلید خارجی رو توضیح بدید و بگید که چطوری یه فیلد میتونه مقدارش رو از کلید اصلی یه جدول دیگه بگیره؟؟؟؟؟؟؟؟؟؟
خواهش میکنم کمکم کنید دانشجو هستم و پروژه اخر ترم دارم.
خواهشششش

------------------------------------
سلام.
کلید اصلی : Primary Key
کلید خارجی : Foreign Key

اینا مفاهیم اصلی sql هستند و برای ارتباط بین جداول در بانک های اطلاعاتی رابطه ای مثل sql می باشند

پیشنهاد می کنم یک کتاب یا فیلم آموزش sql فارسی دانلود یا خریداری کنین و بخونین.

نوشته شده در تاریخ پنجشنبه 13 خرداد 1395    | توسط: ح.م    |    | نظرات()


بوت استرپ چیست ؟

امروز نام بوت استرپ بسیار زیاد به گوشمون می خوره ولی به واقع بوت استرپ چیست ؟

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

کار با بوت استرپ بسیار ساده است، مثل این می مونه که کدهای css نوشته شده باشه و شما فقط کلاس های نوشته شده رو به تگ های صفحتون (div , a , ...) نسبت بدید.

به همین سادگی.
برای شروع کار با بوت استرپ ابتدا باید به سایت getbootstrap.com وارد بشید و فایل های مورد نیازتون رو دانلود کنین.
سپس از طریق http://getbootstrap.com/getting-started می تونین مراحل کار با بوت استرپ رو یاد بگیرین.

در پایین همین بخش چند تا نمونه قالب قرار داده شده تا بتونین بهتر با روش کار بوت استرپ آشنا بشین.
بعنوان نمونه این قالب http://getbootstrap.com/examples/carousel رو می تونین ببینین که تقریبا یک قالب خیلی آماده است.
اینجوری سایتی که بصورت عادی 2-3 روز وقت می گیره رو با بوت استرپ توی یک روز میشه زد !
چون توی بوت استرپ خیلی از کار گرافیک از استفاده نمیشه و بیشتر با رنگ ها و افکت های css3 استفاده میشه و از طرفی هم شما تقریبا هیچ کد css ای نمی نویسین !
موفق باشید

نوشته شده در تاریخ جمعه 2 بهمن 1394    | توسط: ح.م    | طبقه بندی: آموزش بوت استرپ،     | نظرات()


مشکل همیشگی جلسات تجاری شرکت های نرم افزاری

در اغلب جلسات تجاری مواردی وجود دارد که کابوس تیم توسعه و سرپرستان آنهاست.

جهت  شناخت عمق مشکل پیشنهاد می کنم ویدئوی زیر را مشاهده نمایید.



[http://www.aparat.com/v/Delx2]

نوشته شده در تاریخ یکشنبه 13 دی 1394    | توسط: ح.م    | طبقه بندی: مهندسی نرم افزار،     | نظرات()


چک لیست امنیتی پروژه های نرم افزاری تحت وب

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

ابتدا اجازه دهید مقداری با حملات آشنا شویم و سپس راه مقابله را در کنار هم بررسی نماییم. (با نت نیک همراه باشید)

مهمترین و خطرناک ترین حملات سطح وب:

حمله XSS

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

حال هکر به راحتی کوکی رو روی مرورگر خودش تنظیم می کنه و بعد وارد سایت شما میشه، سیستم شما اونو با کاربر شما اشتباه می گیره و با راحتی هکر به اطلاعات پنل کاربری کاربر(ان) شما دست پیدا می کنه.


حمله SQL Injection

این حمله معروفترین حمله است که تقریبا با قدرت می تونم بگم که درتکنولوژی ASP.Net با امکانات فوق العاده ای که بصورت توکار در دات نت در نظر گرفته شده است ، بصورت کامل به فراموشی سپرده شده است. فقط 2 تا نکته ریز هست که باید در کداتون رعایت کنین و تمام

در مورد حمله خدمت سروران عزیزم عارضم که بدین صورت است که هکر یک سری دستورات SQL رو توی کوئری استرینگ به صفحات تزریق می کنه و بدین صورت می تونه در کدهای کوئری TSQL شما اختلال ایجاد کنه و اطلاعات جداول شما رو بدست بیاره. در این نوع حمله ، هکر از طریق باگ سطح کد نویسی کدهای نرم افزار، به دیتابیس حمله می کنه و اطلاعاتی مثل نام کاربری و کلمه عبور ادمین یا کاربران رو می دزده و بعد میره داخل پنل و هر چی می تونه خرابکاری می کنه


حمله CSRF

این حمله یکی از جالت ترین و جذاب ترین نوع حملات است که هوش بالای دوستان هکر رو نشون میده. عبارت CSRF مخفف Cross Site Request Forgery است. (احتمالا دوستان ام وی سی باز این عبارت براشون آشناست.)

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

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


حمله Brute Force

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

مقالات آموزشی دانشجویی برنامه نویسی و الکترونیک و شبکه

حمله DDOS

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

حملات دیگری هم هست که الان حضور ذهن ندارم و انشالاه در آینده این پست کامل تر و به یکی از مراجع مهم برنامه نویسان تبدیل میشه. کامنت های شما رو با روی باز می پذیریم


حمله SHELL

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

ابنجاست که باید شدیدا مراقب فایل هایی که روی سایت شما آپلود می شوند باشید.


حمله SNIFF

در این نوع حملات هکر پکت های رد و بدل شده بین کاربران شما و سرور شما را شنود می نماید و به راحتی می تواند اطلاعات مهمی مثل نام کاربری و رمز عبور کاربران شما را بدست آورد.



چک لیست امنیتی پروژه های نرم افزاری تحت وب

  1. بررسی کامل ورودی های دریافتی از فرم های سایت، هم در سمت کلاینت و هم در سطح سرور. >> حمله XSS
  2. حتما در فرم های عمومی سایتتان از تصویر کپچا با امنیت بالا استفاده نمایید. >> حمله Brute Force
  3. حتما سیستم شخصی سازی صفحات ارور را فعال نمایید و از نمایش صفحات ارور حاوی اطلاعات مهم مانند صفحات ارور ASP.Net جلوگیری نمایید.
  4. استفاده از ORM ها یا استفاده از پروسیجرهای پارامتریک >> حمله SQL Injection
  5. لاگ کردن ارورهای سطح کد و سطح روتینگ >> حمله SQL Injection
  6. جلوگیری از ایندکس شدن صفحات لاگین مدیریت سایت
  7. لاگ کردن ورود و خروج افراد
  8. امن سازی سرویس های ای جکس و چک کردن  ای جکس بودن درخواست ها
  9. محدود کردن سرویس های حساس به درخواست های POST
  10. عدم استفاده از آی دی در پنل های کاربران بالاخص در آدرس صفحات (کویری استرینگ) و ..استفاده از کد غیر قابل پیش بینی مثل GUID و حتی الامکان بررسی مالکیت داده ها در همه بخش ها جهت محکم کاری بیشتر (خدای نکرده کاربر با تغییر ادرس نتومه به داده های یک کاربر دیگه دسترسی داشته باشه)
  11. حتی الامکان جداسازی فیزیکی پنل مدیران از کاربران جهت محکم کاری
  12. استفاده از الگوریتم های کدگذاری ترکیبی و کد کردن اطلاعات حساس قبل از ذخیره سازی در دیتابیس
  13. ساخت پروژه بصورت چند لایه
  14. اشتراک گذاری اینترفیس در سرویس های خارج برنامه ای و عدم اشتراک گذاری کلاس اصلی
  15. استفاده از تکنیک های مقابله با CSRF در همه سرویس های POST. در ام وی سی اتریبیوت AntyForgery استفاده گردد. >> حمله CSRF
  16. استفاده از سیستم های مدیریت نقش امن مانند IDENTITY در ام وی سی و یا استفاده از امکانات توکار دات نت در سیستم های مدیریت نقش شخصی سازی شده ( Custom Role Provider ها)
  17. بررسی فرمت و پسوند فایل های آپلود شده
  18. استفاده از تکنیک های لاگین چند سطحی برای پنل ادمین (در این روش شما حتی با داشتن نام کاربری و کلمه عبور ادمین، قادر نخواهید بود وارد پنل ادمین شوید)
  19. تنظیم iis  جهت جلوگیری از اجرای فایل های اجرایی در مسیر اپلود فایل ها >> حمله SHELL
  20. آپلود فایل ها در پوشه  App_Data و  دسترسی به فایل ها از طریق سرویس های خود شما.  این پوشه امن است و دسترسب مستقیم از طریق ادرس بار مرورگر به فایل های درون ان توسط iis داده نمی شود و ملت فقط می تونن از طریق سرویس های خود شما به فایل ها دسترسی داشته باشن و بدین صورت در اکشن می تونین با Cast کردن فایل ها به نوع خودشون (تصویر. پی دی اف یا ...) هکر رو نا امید کنین >> حمله SHELL
  21. استفاده از  SSL بسیار اهمیت دارد. بالاخص اگر Service Oriented کار می کنین و سرویس هایی برای اپلیکیشن های خارجی مثل اپلیکیشن اندروید و ... دارین. این مورد در صفحات لاگین نیز بسیار مهم است و باعث می شود نام کاربری و کلمه عبور کاربران شما بصورت هش شده بین کامپیوتر کاربر و سرور شما رد و بدل شود و عملا شنود پکت ها فایده ای برای هکر نخواهد داشت.  >> حمله SNIFF


* نسخه کامل تر مقاله رو می تونین از ایــــنــــــجـــــــــــا مطالعه نمایید.

نوشته شده در تاریخ پنجشنبه 8 مرداد 1394    | توسط: ح.م    | طبقه بندی: آموزش امنیت در asp.net،     | نظرات()