Forwarded from کدهک
در ASP Core یک سیستم تزریق وابستگی کم حجم و ساده پیاده شده است که نیاز به استفاده از سایر IoC ها از قبیل StructureMap و Ninject یا AutoFac را از بین میبرد. به طور کلی می توان به سه روش کلاسها (سرویسها) را در این فریم ورک تزریق کرد.
1- حالت Transient
در این روش سرویس در هربار که فراخوانی شود ایجاد میشود.
2- حالت Scoped
در این روش سرویس به ازای هر Request تنها یکبار ایجاد میشود.
3- حالت Singleton
در این روش سرویس تنها در اولین فراخوانی ایجاد میشود و در دفعات بعد از همان سرویس استفاده میشود.
1- حالت Transient
در این روش سرویس در هربار که فراخوانی شود ایجاد میشود.
2- حالت Scoped
در این روش سرویس به ازای هر Request تنها یکبار ایجاد میشود.
3- حالت Singleton
در این روش سرویس تنها در اولین فراخوانی ایجاد میشود و در دفعات بعد از همان سرویس استفاده میشود.
چرا فیدلر را نصب کنم ؟
در سال 2003 اریک لارنس که مشغول کار روی Internet Explorer بود برای تست پروژه نیاز به ابزاری داشت تا بتواند سریع و راحت درخواستهای HTTP را در مرورگر بررسی کند. در نهایت تصمیم گرفت یک برنامه ی ساده با #C درست کند که بعدا تبدیل به Fiddler شد.
فیلدر در حال حاضر توسط شرکت Telerik خریداری شده و خود اریک لارنس هم در تیم امنیتی Chrome مشغول است.
نرم افزار Fiddler کاملا رایگان است و بعد از نصب به صورت یک Proxy عمل می کند و می تواند تمام ترافیک عبور کننده از مرورگر را لوگ کند.می توانید در آن کد نویسی کنید. در این روش مانند Middle man عمل میکند و درخواستها را قبل از ارسال به سرور و پاسخها را قبل از رسیدن به کلاینت تغییر می دهد.
با فیدلر می توانید یک Request با داده های مورد نیاز شبیه سازی کنید و به سایت خودتون یا هر سایت دیگری که در اینترنت هست ارسال کنید. با این تکنیک می توانید رفتار سایت به خصوص وب سرویس را تست کنید.
در مقایسه با ابزاری مانند Postman می توان گفت فیلدر امکانات بسیار بیشتری دارد اما محیط کاری آن پیچده تر است. می توانید برای آن افزونه نویسی کنید یا کتابخانه ی آن را درون پروژه های سی شارپ مستقیما استفاده کنید.
در سال 2003 اریک لارنس که مشغول کار روی Internet Explorer بود برای تست پروژه نیاز به ابزاری داشت تا بتواند سریع و راحت درخواستهای HTTP را در مرورگر بررسی کند. در نهایت تصمیم گرفت یک برنامه ی ساده با #C درست کند که بعدا تبدیل به Fiddler شد.
فیلدر در حال حاضر توسط شرکت Telerik خریداری شده و خود اریک لارنس هم در تیم امنیتی Chrome مشغول است.
نرم افزار Fiddler کاملا رایگان است و بعد از نصب به صورت یک Proxy عمل می کند و می تواند تمام ترافیک عبور کننده از مرورگر را لوگ کند.می توانید در آن کد نویسی کنید. در این روش مانند Middle man عمل میکند و درخواستها را قبل از ارسال به سرور و پاسخها را قبل از رسیدن به کلاینت تغییر می دهد.
با فیدلر می توانید یک Request با داده های مورد نیاز شبیه سازی کنید و به سایت خودتون یا هر سایت دیگری که در اینترنت هست ارسال کنید. با این تکنیک می توانید رفتار سایت به خصوص وب سرویس را تست کنید.
در مقایسه با ابزاری مانند Postman می توان گفت فیلدر امکانات بسیار بیشتری دارد اما محیط کاری آن پیچده تر است. می توانید برای آن افزونه نویسی کنید یا کتابخانه ی آن را درون پروژه های سی شارپ مستقیما استفاده کنید.
الگوریتم Key Stretching
یکی از روشهای معمول هک Password امتحان کردن عبارتهای مختلف است. به این تکنیک Brute-Force هم گفته می شود.
معمولا کاربرها رمزهای عبور ساده ای انتخاب می کنند و هکر می تواند با استفاده از نرم افزار حجم بالایی از عبارتها را در زمان کوتاه تست کند.
الگوریتم Key Stretching با استفاده از کلمه ی عبور و Salt که یک عبارت رندوم است یک هش درست میکند. سپس این کار را دوباره تکرار میکند تا جایی که هش تولید شده به حداقل استاندارد برسد .
برگرداندن هر مرحله هش و پیدا کردن رمز عبور در این روش حداقل به چند ثانیه وقت نیاز دارد که عمل Brute-force را بسیار کند می کند.
یکی از روشهای معمول هک Password امتحان کردن عبارتهای مختلف است. به این تکنیک Brute-Force هم گفته می شود.
معمولا کاربرها رمزهای عبور ساده ای انتخاب می کنند و هکر می تواند با استفاده از نرم افزار حجم بالایی از عبارتها را در زمان کوتاه تست کند.
الگوریتم Key Stretching با استفاده از کلمه ی عبور و Salt که یک عبارت رندوم است یک هش درست میکند. سپس این کار را دوباره تکرار میکند تا جایی که هش تولید شده به حداقل استاندارد برسد .
برگرداندن هر مرحله هش و پیدا کردن رمز عبور در این روش حداقل به چند ثانیه وقت نیاز دارد که عمل Brute-force را بسیار کند می کند.
اجرای کدهای سی شارپ به صورت آنلاین
با استفاده از ابزار جدید مایکروسافت می توانید کدهای سی شارپ را به صورت یک برنامه ی کنسول در مرورگر اجرا کنید.
برای دسترسی به این سرویس می توانید به آدرس زیر مراجعه کنید :
https://try.dot.net
همچنین راهنمای استفاده در https://try.dot.net/docs موجود است.
با استفاده از ابزار جدید مایکروسافت می توانید کدهای سی شارپ را به صورت یک برنامه ی کنسول در مرورگر اجرا کنید.
برای دسترسی به این سرویس می توانید به آدرس زیر مراجعه کنید :
https://try.dot.net
همچنین راهنمای استفاده در https://try.dot.net/docs موجود است.
پکیج Windows Compatibility
فریم ورک ASP Core 2.1 دارای بیش از 30 هزار API است اما هنوز بخشی از کتابخانه های قدیمی دات نت به آن اضافه نشده است. دلیل اصلی آن هم پشتیبانی از سایر سیستم عامل هاست. مثلا کتابخانه های مربوط به Registery فقط در ویندوز کاربرد دارد و لینوکس و مک چنین سیستمی ندارند.
پکیج Windows Compatibility پشتیبانی از حدود 20 هزار API قدیمی دات نت را به core اضافه میکند. با این کتابخانه منتقل کردن پروژه های قدیمی ASP MVC به ASP Core راحت تر میشود. مثلا بسیاری از سایتها برای ویرایش عکس از Drawing استفاده می کنند و حالا می توانند بدون تغییر کد این بخش مستقیما به ASP Core مهاجرت کنند.
در واقع بخش عمده ای از سایتهای قدیمی را می توان فقط با کپی و پیست در مدت کوتاهی به ASP Core منتقل کرد.
به همراه این پکیج یک Analyzer هم با Roslyn پیاده شده است که هنگام کد نویسی سازگاری کد را با سیستم عامل لینوکس و مک بررسی می کند. اگر قصد ندارید پروژه ی خود را روی سرور لینوکس اجرا کنید می توانید با خیال راحت از این پکیج استفاده کنید در غیر این صورت باید به هشدارهای Analyzer توجه کنید.
نسخه ی Preview این پکیج در آدرس زیر قابل دسترسی است.
https://www.nuget.org/packages/Microsoft.Windows.Compatibility/2.0.0-preview2-26406-04
فریم ورک ASP Core 2.1 دارای بیش از 30 هزار API است اما هنوز بخشی از کتابخانه های قدیمی دات نت به آن اضافه نشده است. دلیل اصلی آن هم پشتیبانی از سایر سیستم عامل هاست. مثلا کتابخانه های مربوط به Registery فقط در ویندوز کاربرد دارد و لینوکس و مک چنین سیستمی ندارند.
پکیج Windows Compatibility پشتیبانی از حدود 20 هزار API قدیمی دات نت را به core اضافه میکند. با این کتابخانه منتقل کردن پروژه های قدیمی ASP MVC به ASP Core راحت تر میشود. مثلا بسیاری از سایتها برای ویرایش عکس از Drawing استفاده می کنند و حالا می توانند بدون تغییر کد این بخش مستقیما به ASP Core مهاجرت کنند.
در واقع بخش عمده ای از سایتهای قدیمی را می توان فقط با کپی و پیست در مدت کوتاهی به ASP Core منتقل کرد.
به همراه این پکیج یک Analyzer هم با Roslyn پیاده شده است که هنگام کد نویسی سازگاری کد را با سیستم عامل لینوکس و مک بررسی می کند. اگر قصد ندارید پروژه ی خود را روی سرور لینوکس اجرا کنید می توانید با خیال راحت از این پکیج استفاده کنید در غیر این صورت باید به هشدارهای Analyzer توجه کنید.
نسخه ی Preview این پکیج در آدرس زیر قابل دسترسی است.
https://www.nuget.org/packages/Microsoft.Windows.Compatibility/2.0.0-preview2-26406-04
www.nuget.org
Microsoft.Windows.Compatibility 2.0.0-preview2-26406-04
This Windows Compatibility Pack provides access to APIs that were previously available only for .NET Framework. It can be used from both .NET Core as well as .NET Standard.
7e3dbdb95b30650eabade0ac73a10b22d4dbe8b3
When using NuGet 3.x this package requires…
7e3dbdb95b30650eabade0ac73a10b22d4dbe8b3
When using NuGet 3.x this package requires…
کاربردهای Action Injection
روش همیشگی این است که وابستگی های کلاس را در سازنده ی کلاس تعریف می کنیم. اما روشهای دیگر تزریق وابستگی هم وجود دارد.
سیستم تزریق وابستگی که در خود ASP Core طراحی شده به شما امکان میدهد از روش Action Injection نیز استفاده کنید.
از آنجا که کنترلر در هر Request جدید دوباره نمونه سازی می شود هر چه از میزان وابستگی های سازنده کم کنیم کارایی سیستم افزایش میبابد.
در بعضی موارد از یک وابستگی فقط برای یک یا دو اکشن درون کنترلر استفاده می کنیم. اینجاست که می توانیم با Action Injection مستفیما آن درون متد مورد نظر تزریق کنیم و از بار سازنده کم کنیم.
روش همیشگی این است که وابستگی های کلاس را در سازنده ی کلاس تعریف می کنیم. اما روشهای دیگر تزریق وابستگی هم وجود دارد.
سیستم تزریق وابستگی که در خود ASP Core طراحی شده به شما امکان میدهد از روش Action Injection نیز استفاده کنید.
از آنجا که کنترلر در هر Request جدید دوباره نمونه سازی می شود هر چه از میزان وابستگی های سازنده کم کنیم کارایی سیستم افزایش میبابد.
در بعضی موارد از یک وابستگی فقط برای یک یا دو اکشن درون کنترلر استفاده می کنیم. اینجاست که می توانیم با Action Injection مستفیما آن درون متد مورد نظر تزریق کنیم و از بار سازنده کم کنیم.
نگاهی به owasp top 10
موسسه ی owasp هر 4 سال یکبار لیستی از مهمترین تهدیدات امنیتی اینترنت منتشر میکند. در مقایسه با 2013 هنوز هم Injection و Broken Authentication رتبه های اول و دوم خود را حفظ کرده اند. اما حملات XSS از رتبه ی سوم به هفتم نزول پیدا کرده است.
منظور از Injection دستکاری اطلاعات ارسالی به سرور است. هکر اطلاعات ارسالی را به نحوی تغییر میدهد که وقتی در سرور خوانده میشود رفتار آن را تغییر دهد. معمول ترین حمله دستکاری کوئری های SQL است که به راحتی روی سایتهایی که ORM ندارند کار میکند.
منظور از Broken Authentication سیستم تشخیص هویت غیر استاندارد است. بسیاری از برنامه نویسان خودشان دست به کار پیاده سازی این بخش میشوند و تصور می کنند تنها با قرار فرم ثبت نام سایت ایمن شده است اما هک کردن چنین سیستمهایی به راحتی صورت میگیرد. عدم وجود CAPTCHA و محدود نکردن دفعات خطای ورود دست هکر ها را برای Brute-force باز می گذارد.
در روش XSS هکر با استفاده از کوکی های مرورگر خودش را جای کاربر قرار میدهد و می تواند به اطلاعات ایمیل یا هر حساب کاربری دیگرش دسترسی پیدا کند.
تجربه ی هک شدن پیامرسان سروش نشان میدهد که وقتی ازرش اطلاعات یک سایت بالا میرود جزئی ترین مسائل می تواند منجر به تهدیدهای امنیتی مهم شود. یک اتفاق کوچک می تواند یک کسب و کار بدون پشتوانه را از هستی نابود کند.
موسسه ی owasp هر 4 سال یکبار لیستی از مهمترین تهدیدات امنیتی اینترنت منتشر میکند. در مقایسه با 2013 هنوز هم Injection و Broken Authentication رتبه های اول و دوم خود را حفظ کرده اند. اما حملات XSS از رتبه ی سوم به هفتم نزول پیدا کرده است.
منظور از Injection دستکاری اطلاعات ارسالی به سرور است. هکر اطلاعات ارسالی را به نحوی تغییر میدهد که وقتی در سرور خوانده میشود رفتار آن را تغییر دهد. معمول ترین حمله دستکاری کوئری های SQL است که به راحتی روی سایتهایی که ORM ندارند کار میکند.
منظور از Broken Authentication سیستم تشخیص هویت غیر استاندارد است. بسیاری از برنامه نویسان خودشان دست به کار پیاده سازی این بخش میشوند و تصور می کنند تنها با قرار فرم ثبت نام سایت ایمن شده است اما هک کردن چنین سیستمهایی به راحتی صورت میگیرد. عدم وجود CAPTCHA و محدود نکردن دفعات خطای ورود دست هکر ها را برای Brute-force باز می گذارد.
در روش XSS هکر با استفاده از کوکی های مرورگر خودش را جای کاربر قرار میدهد و می تواند به اطلاعات ایمیل یا هر حساب کاربری دیگرش دسترسی پیدا کند.
تجربه ی هک شدن پیامرسان سروش نشان میدهد که وقتی ازرش اطلاعات یک سایت بالا میرود جزئی ترین مسائل می تواند منجر به تهدیدهای امنیتی مهم شود. یک اتفاق کوچک می تواند یک کسب و کار بدون پشتوانه را از هستی نابود کند.
محبوبیت سرویس های ابری
وقتی از سرویس ابری استفاده میکنید بر مبنای میزان ترافیک هزینه پرداخت می کنید. هر مقدار که ترافیک سایت بالا میرود منابع بیشتری به سایت اختصاص داده میشود . هیچوقت سایت شما از دسترس خارج نمی شود. حتی لازم نیست پشت سیستم باشید و کاری انجام دهید. هر نوع تغییر در میزان دیسک ، رم یا هسته ی سرور با یک کلیک اتفاق می افتد.
فضاهای ابری از همه ی تکنولوژی ها پشتیبانی می کنند. فرقی نمیکند که لینوکس باشد یا ویندوز یا نوع دیتابیس چیست. فقط کافی است که سرویس مورد نظر را انتخاب کنید تا بتوانید شروع به کد نویسی کنید.
سرویس های ابری یکی از دلایل رشد سریع Docker و ابزاری مانند Kubernetes است و خودش یک بازار جدید را بوجود آورده است.
با سرویس ابری حفظ و نگه داری سایت ساده میشود و هزینه ی DevOps به مقدار چشمگیری کاهش پیدا میکند. برای توسعه ی سخت افزاری دیگر نیاز به متخصصین امنیت و شبکه ندارید.
ساتیا نادلا مدیر عامل مایکروسافت به خوبی ارزش سرویس های ابری را متوجه شد و در حال حاضر منابع زیادی را صرف سرویس ابری مایکروسافت یا همان Azure می کند. این بازار که برای مدتها در اختیار آمازون بود حالا یک سردمدار جدید دارد.
وقتی از سرویس ابری استفاده میکنید بر مبنای میزان ترافیک هزینه پرداخت می کنید. هر مقدار که ترافیک سایت بالا میرود منابع بیشتری به سایت اختصاص داده میشود . هیچوقت سایت شما از دسترس خارج نمی شود. حتی لازم نیست پشت سیستم باشید و کاری انجام دهید. هر نوع تغییر در میزان دیسک ، رم یا هسته ی سرور با یک کلیک اتفاق می افتد.
فضاهای ابری از همه ی تکنولوژی ها پشتیبانی می کنند. فرقی نمیکند که لینوکس باشد یا ویندوز یا نوع دیتابیس چیست. فقط کافی است که سرویس مورد نظر را انتخاب کنید تا بتوانید شروع به کد نویسی کنید.
سرویس های ابری یکی از دلایل رشد سریع Docker و ابزاری مانند Kubernetes است و خودش یک بازار جدید را بوجود آورده است.
با سرویس ابری حفظ و نگه داری سایت ساده میشود و هزینه ی DevOps به مقدار چشمگیری کاهش پیدا میکند. برای توسعه ی سخت افزاری دیگر نیاز به متخصصین امنیت و شبکه ندارید.
ساتیا نادلا مدیر عامل مایکروسافت به خوبی ارزش سرویس های ابری را متوجه شد و در حال حاضر منابع زیادی را صرف سرویس ابری مایکروسافت یا همان Azure می کند. این بازار که برای مدتها در اختیار آمازون بود حالا یک سردمدار جدید دارد.
پروژه Hello world با حداقل تنظیمات
وقتی یک پروژه ی ASP Core ایجاد می کنید حجم زیادی از تنظیمات به صورت پیشفرض به پروژه اضافه میشود. برای اینکه ساده ترین و سبکترین حالت الگوی MVC را در ASP Core پیاده کنید باید کمی به عقب برگردید و بعضی از دستورات را دستکاری کنید.
روش انجام این مراحل در پست زیر شرح داده شده است.
https://codehaks.github.io/2017/08/31/Bare-Minimum-Hello-world.html
وقتی یک پروژه ی ASP Core ایجاد می کنید حجم زیادی از تنظیمات به صورت پیشفرض به پروژه اضافه میشود. برای اینکه ساده ترین و سبکترین حالت الگوی MVC را در ASP Core پیاده کنید باید کمی به عقب برگردید و بعضی از دستورات را دستکاری کنید.
روش انجام این مراحل در پست زیر شرح داده شده است.
https://codehaks.github.io/2017/08/31/Bare-Minimum-Hello-world.html