آشنایی با کاربردهای Roslyn
برای مدتها کامپایبر یک جعبه ی سیاه بود که کدهای شما را می گرفت و فایل exe تولید می کرد. اما مایکروسافت این رویه را با Roslyn عوض کرد. کامپایبر جدید سی شارپ سورس باز است و می توانید از آن به صورت پکیج کنار پروژه ی اصلی استفاده کنید.
سورس باز بودن این امکان را میدهد که ببینید در پشت زمینه ی ترجمه ی کدهای #C چه می گذرد.
با پکیج روزلین می توانید سورس کدها را آنالیز کنید. از VS 2015 چراغ کوچکی که به شما نکاتی درباره ی کد نویسی گوش زد می کند با روزلین نوشته شده است. بسیاری از پلاگین های ویژوال استودیو با استفاده از Roslyn کدها را تحلیل می کنند که خودش کمک بزرگی به برنامه نویسان است.
با روزلین می توانید قوانین خاصی برای شرکت خود طراحی کنید و آن را روی کدهای همه ی برنامه نویسها اعمال کنید. مثلا شرط کنید که نام متغیرهای نباید دارای زیر خط باشد و باید با حروف کوچک شروع شود. یا هیچ متغیری با مقدار null تعریف نشود. این قوانین به صورت زنده هنگام کد نویسی روی پروژه اعمال میشود.
وقتی می خواهید با T4 کد Generate کنید با Roslyn می توانید کدهای پروژه را بخوانید و خروجی توابع و اتریبیوت های یک متد را پیدا کنید. ببینید یک کلاس از چه کلاسهایی ارث بری کرده و چند بار به آن ارجا داده شده است.
برای مدتها کامپایبر یک جعبه ی سیاه بود که کدهای شما را می گرفت و فایل exe تولید می کرد. اما مایکروسافت این رویه را با Roslyn عوض کرد. کامپایبر جدید سی شارپ سورس باز است و می توانید از آن به صورت پکیج کنار پروژه ی اصلی استفاده کنید.
سورس باز بودن این امکان را میدهد که ببینید در پشت زمینه ی ترجمه ی کدهای #C چه می گذرد.
با پکیج روزلین می توانید سورس کدها را آنالیز کنید. از VS 2015 چراغ کوچکی که به شما نکاتی درباره ی کد نویسی گوش زد می کند با روزلین نوشته شده است. بسیاری از پلاگین های ویژوال استودیو با استفاده از Roslyn کدها را تحلیل می کنند که خودش کمک بزرگی به برنامه نویسان است.
با روزلین می توانید قوانین خاصی برای شرکت خود طراحی کنید و آن را روی کدهای همه ی برنامه نویسها اعمال کنید. مثلا شرط کنید که نام متغیرهای نباید دارای زیر خط باشد و باید با حروف کوچک شروع شود. یا هیچ متغیری با مقدار null تعریف نشود. این قوانین به صورت زنده هنگام کد نویسی روی پروژه اعمال میشود.
وقتی می خواهید با T4 کد Generate کنید با Roslyn می توانید کدهای پروژه را بخوانید و خروجی توابع و اتریبیوت های یک متد را پیدا کنید. ببینید یک کلاس از چه کلاسهایی ارث بری کرده و چند بار به آن ارجا داده شده است.
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 هکر با استفاده از کوکی های مرورگر خودش را جای کاربر قرار میدهد و می تواند به اطلاعات ایمیل یا هر حساب کاربری دیگرش دسترسی پیدا کند.
تجربه ی هک شدن پیامرسان سروش نشان میدهد که وقتی ازرش اطلاعات یک سایت بالا میرود جزئی ترین مسائل می تواند منجر به تهدیدهای امنیتی مهم شود. یک اتفاق کوچک می تواند یک کسب و کار بدون پشتوانه را از هستی نابود کند.