نظرات مطالب
ارتقاء به ASP.NET Core 1.0 - قسمت 1 - NET Core. چیست؟
یک نکته‌ی تکمیلی: برای کار با نگارش‌های مختلف NET Core. نیاز به چه نگارشی از Visual Studio وجود دارد؟

.NET Core SDK .NET Core Runtime Compatible Visual Studio MSBuild Notes
2.1.5nn 2.1 2017 15 Installed as part of VS 2017 version 15.9
2.1.6nn 2.1 2019 16 Installed as part of VS 2019
2.2.1nn 2.2 2017 15 Installed manually
2.2.2nn 2.2 2019 16 Installed as part of VS 2019
3.0.1nn 3.0 (Preview) 2019 16 Installed manually

و یا از VSCode استفاده کنید.
نظرات مطالب
ELMAH و حملات XSS
- به سطر HandleErrorAttribute پیش فرض نیازی نیست (البته اگر تنظیمات وب کانفیگ درستی داشته باشید). در قسمت 16 سری MVC توضیح دادم. وجود آن سبب می‌شود که ELMAH اصلا کار نکند و خطای مدیریت نشده‌ای به آن ارجاع داده نشود (چون قبلا مدیریت شده‌).
- بله. همچنان ELMAH معتبر است. نکته فوق را هم اضافه کنید، کاملتر خواهد شد.
نظرات اشتراک‌ها
ایجاد یک موتور جستجوی سفارشی جهت search bar فایرفاکس
این موارد هست که توسط افزونه extensions list dumper تهیه شد:
- Adblock Plus 2.1.2
http://adblockplus.org/en/
- Add to Search Bar 2.0
http://firefox.maltekraus.de/extensions/add-to-search-bar
- Calculator 1.1.27
http://code.google.com/p/firefoxcalculator/
- CodeBurner for Firebug 1.6
http://tools.sitepoint.com/codeburner
- ColorZilla 2.8.1
http://www.colorzilla.com/
- Cookies Manager+ 1.5.1
https://addons.mozilla.org/en-US/firefox/addon/cookies-manager-plus/
- CSS Usage 0.2.9
http://spaghetticoder.org/cssusage/
- DOM Inspector 2.0.12
http://www.mozilla.org/projects/inspector/
- Extension List Dumper 1.15.2
http://www.sogame.cat/
- File Title 1.4
http://www.jasnapaka.com/mozilla/filetitle/
- Firebug 1.10.2
http://www.getfirebug.com/
- FireDiff 1.2.0
http://www.incaseofstairs.com/firediff
- Firefinder for Firebug 1.04
http://robertnyman.com/firefinder/
- FireFTP 2.0.7
http://fireftp.mozdev.org
- FireQuery 1.2
http://firequery.binaryage.com
- Forecastfox 2.2.1
http://www.getforecastfox.com/
- Greasemonkey 1.0
http://www.greasespot.net/
- HighlightAll 1.6
http://jgoudey.free.fr/highlightall/
- HttpFox 0.8.11
http://code.google.com/p/httpfox/
- IranianCalendar 3.1.20081222
http://www.alavi.us/jcal/
- Linky 3.0.0
http://gemal.dk/mozilla/linky.html
- MeasureIt 0.4.10
http://frayd.us/
- Open With 5.2.1
http://www.darktrojan.net/software/addons/openwith/
- PDF Download 3.0.0.2
http://www.pdfdownload.org
- Pixel Perfect 1.7.1
http://www.pixelperfectplugin.com/
- Pray Times! 1.1.7
http://praytimes.org/
- Proxy Selector 0.80.7
http://addons.mozilla.org
- Right-Click-Link 1.1.5
http://rickardandersson.com/
- SearchPreview 5.9
http://searchpreview.de/
- Server Spy 0.2.1
http://www.jacquet80.eu/mozilla/exts/ServerSpy/
- Session Manager 0.7.9
http://sessionmanager.mozdev.org/
- Show MyIP 0.8
http://www.tsql.de/download/firefox-addon-ip-adresse-ip-address
- Show Picture 2.7
https://addons.mozilla.org/en-US/firefox/addon/show-picture/?src=api
- Showcase 0.9.5.8
http://showcase.uworks.net/
- Snap Links Plus 2.2.1
http://snaplinks.mozdev.org/
- Sothink Web Video Downloader for Firefox 6.8
http://www.web-video-downloader.com
- Speed Dial 0.9.6.8
http://speeddial.uworks.net/
- SQLite Manager 0.7.7
http://sqlite-manager.googlecode.com/
- Stylish 1.2.6
http://userstyles.org/
- Subtitle Matcher 0.3.4
http://ds6.ovh.org/hashsubtitles/subtitle_matcher_firefox_extensions.php
- Tilt 1.0.1
http://blog.mozilla.com/tilt/
- UnMHT 5.7.5
http://www.unmht.org/unmht/en_index.html
- UnPlug 2.050
http://unplug.dbatley.com/
- User Agent Switcher 0.7.3
http://chrispederick.com/work/user-agent-switcher/
- View Source Chart 3.05
http://zigrat.com
- Viewstate Size 1.0.4
http://www.kirkov.dk/projects/firefox/viewstatesize
- Web Developer 1.2.1
http://chrispederick.com/work/web-developer/firefox/
- YSlow 3.1.4
http://developer.yahoo.com/yslow

اشتراک‌ها
فایل security.txt مخصوص وب سایت‌ها چیست؟

The main purpose of security.txt is to help make things easier for companies and security researchers when trying to secure platforms. Thanks to security.txt, security researchers can easily get in touch with companies about security issues. 

فایل security.txt مخصوص وب سایت‌ها چیست؟
مطالب
تنظیمات مدت زمان اعتبار کاربران در ASP.NET Identity
نکته: در این مقاله کلمه "بازه زمانی" معادل Interval می‌باشد.
اگر از سیستم احراز هویت از طریق کوکی در asp.net Identity 2.1 استفاده می‌کنید، دو تنظیم برای  بررسی پایان یافتن اعتبار کاربر وجود دارد که در نگاه اول، هیچ تفاوتی باهم نداشته و شبیه به هم به نظر می‌رسند: ValidateInterval و ExpireTimeSpan
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    Provider = new CookieAuthenticationProvider
    {
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
            validateInterval: TimeSpan.FromMinutes(15),
            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)),
    },
    SlidingExpiration = false,
    ExpireTimeSpan = TimeSpan.FromMinutes(30)
});

ExpireTimeSpan

CookieAuthenticationOptions.ExpireTimeSpan یک خصیصه است که به شما اجازه می‌دهد تا مدت زمان اعتبار کوکی ساخته شده توسط Identity را مشخص کنید. در مثال بالا، کوکی به مدت 30 دقیقه از زمان ایجاد آن، معتبر است. هنگامی که این 30 دقیقه به پایان برسد، کاربر باید مجددا لاگین کند، چون SlidingExpiration به false تنظیم شده است.
اگر SlidingExpiration مقدار true داشته باشد، کوکی بعد از هر درخواستی که پس از گذشت بیش از نیمی از مدت زمان مشخص شده در ExpireTimeSpan ارسال شود، مجددا ایجاد خواهد شد. برای مثال در اینجا (با توجه قطعه به کد بالا) اگر کاربر login شود و درخواست بعدی را پس از گذشت 16 دقیقه ارسال کند، کوکی به مدت 30 دقیقه دیگر معتبر خواهد شد. اما اگر کاربر پس از لاگین، در خواست بعدی را 31 دقیقه بعد ارسال کند، باید مجددا عمل لاگین را انجام دهد.

بازه زمانی اعتبارسنجی SecurityStampValidator

ValidateInterval از تابع SecurityStampValidator.OnValidateIdentity، فیلد SecurityStamp را بعد از گذشت یک بازه زمانی بررسی می‌کند تا از اعتبار کوکی اطمینان حاصل شود. این همان بررسی منقضی شدن کوکی نیست، اگرچه می‌تواند سبب همان عملکرد و یا لاگ آوت کاربر شود.
Security Stamp هربار که رمز عبور ایجاد یا عوض شود و یا یک لاگین خارجی (External Login) ایجاد یا حذف شود، به روز می‌شود. اگر کاربر رمز عبورش را تغییر دهد این فیلد تغییر خواهد کرد و این تغییر باعث می‌شود که در بررسی مجدد این فیلد پس از مدت زمان مشخص شده در ValidateInterval، کوکی نامعتبر شناخته شود و کاربر را مجبور به لاگین مجدد کند.
نکته: در صورتی که بخواهید به صورت دستی مقدار این فیلد را تغییر دهید می‌توانید از کد زیر استفاده کنید:
UserManager.UpdateSecurityStampAsync(userId);
برای درک بهتر مثال زیر را در نظر بگیرید:
  1. کاربر در مکان A لاگین می‌شود.
  2. همان کاربر مکان خود را تغییر داده و ده دقیقه بعد در مکان B لاگین می‌شود.
  3. کاربر رمزعبورش را در مکان B در دقیقه 12ام تغییر می‌دهد.
  4. کاربر به مکان A برمی گردد و یک درخواست را در دقیقه 20ام ارسال می‌کند.
  5. چون کاربر یک درخواست را بعد از مدت زمان مشخص شده در ValidateInterval (یعنی 15 دقیقه) در مکان A ارسال می‌کند، پس عملیات چک کردن فیلد SecurityStamp انجام می‌شود و از آنجایی که این فیلد به علت تغییر رمز عبور، به روز شده است، بنابراین کاربر لاگ آوت خواهد شد.
دلیل لاگ آوت شدن کاربر در این سناریو، با حالتی که کوکی منقضی می‌شود تفاوت دارد، چون مدت زمان انقضای کوکی یعنی 30 دقیقه (در این مثال) هرگز نمی‌رسد. درعین حال کاربر لاگ آوت می‌شود چون مقدار validateInterval بر روی 15 دقیقه تنظیم شده است.

تفاوت این دو چیست؟
تفاوت دو حالت در نگاه اول خیلی ظریف است اما این تفاوت مزایای بزرگی فراهم می‌کند، مانند لاگ آوت کردن از هر مکان. اما این ویژگی می‌تواند گیج کننده هم باشد از آنجا که الگوی پیش فرض ASP.NET Identity فقط validateInterval را دارد و ExpireTimeSpan به طور صریح ذکر نشده و مقدار پیش فرض آن روی 14 روز تنظیم شده است.
اشتراک‌ها
ذخیره فایل‌های حجیم توسط مرورگر

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

Browser Constructs as Filenames Max Blob Size Dependencies
Firefox 20+ Blob Yes 800 MiB None
Firefox < 20 data: URI No n/a Blob.js
Chrome Blob Yes 500 MiB None
Chrome for Android Blob Yes 500 MiB None
Edge Blob Yes ? None
IE 10+ Blob Yes 600 MiB None
Opera 15+ Blob Yes 500 MiB None
Opera < 15 data: URI No n/a Blob.js
Safari 6.1+* Blob No ? None
Safari < 6 data: URI No n/a Blob.js
Safari 10.1+   Blob         Yes         n/a           None 
ذخیره فایل‌های حجیم توسط مرورگر