دیروز (25 ماه May سال 2018) اولین روز فعالسازی GDPR یا General Data Protection Regulation بود و به همین خاطر است که اگر به سرویسهای مهم اینترنتی دقت کرده باشید، پر شدهاست از پیامهایی مانند «ما از کوکی استفاده میکنیم»، «ما اطلاعات شما را به این صورت ذخیره میکنیم» و امثال آن. همچنین تعداد زیادی از سرویسهای اینترنتی نیز به کاربران خود پیامهایی را جهت تائید قوانین جدید رعایت حریم خصوصی آنها ارسال کردهاند. برای مثال اگر این قوانین جدید را تائید نکنید، از دریافت بسیاری از خبرنامهها محروم خواهید شد. این مورد نیز از بخشنامهی اتحادیهی اروپا نشات میگیرد که از روز جمعه ۲۵ می(۴ خرداد) تمامی شرکتها، افراد، وبسایتها و ارائهدهندگان خدمات آنلاین، موظف به رعایت آن هستند. موضوع بخشنامه قبل از هرچیزی، حفاظت از اطلاعات خصوصی کاربران است. نهادها و شرکتها و وبسایتهایی که تا ۲۵ می۲۰۱۸ زمینه اجرای این بخشنامه را فراهم نکرده باشند، در خطر جریمههای سنگین هستند. بخشنامه جدید حریم خصوصی اطلاعات، تعیین میکند که چه میزان اطلاعاتی دربارهی هرکسی میتواند جمعآوری و بررسی شود، مورد پردازش قرار گیرد و البته تبدیل به پول شود. این بخشنامه حق تکتک کاربران، بر اطلاعاتشان را تقویت میکند. کاربران حالا حق بیشتری بر اطلاعاتشان، برای «پاک کردن» آنها و «پسگرفتن» آنها دارند. البته آنچه که احتمالا برای همه قابل رؤیت خواهد بود توضیحات مربوط به حفاظت از اطلاعات در وبسایتها است. این توضیحات باید جزئیتر و دقیقتر و برای مخاطبان قابل فهمتر باشند و این به این معنا است که این توضیحات بهمراتب طولانیتر خواهند شد.
در این بین اگر به قالب پیشفرض پروژههای MVC تولید شدهی توسط ASP.NET Core 2.1 نیز دقت کنید، پشتیبانی توکار از پیشنیازهای GDPR در آن لحاظ شدهاست؛ چه از لحاظ گوشزد کردن شرایط حریم خصوصی و پذیرش آن و چه از لحاظ «پاک کردن» و «پس گرفتن» اطلاعات شخصی.
قالب و کوکی پذیرش شرایط حریم خصوصی سایت (Cookie Consent)
اگر قالب پیشفرض یک پروژهی ASP.NET Core 2.1 را اجرا کنید، تصویر فوق را که در آن نوار پذیرش شرایط حریم خصوصی سایت در بالای صفحه درج شدهاست، مشاهده خواهید کرد.
قالب جدید نوار پذیرش شرایط حریم خصوصی در مسیر Views\Shared\_CookieConsentPartial.cshtml واقع شدهاست و در فایل layout برنامه توسط tag helper جدید Partial، رندر و نمایش داده میشود:
در ابتدای این partial view، یک چنین کدهایی درج شدهاند:
بنابراین پذیرش شخص را در یک کوکی درج میکند و در دفعات بعدی بازدید او بر اساس این کوکی است که در مورد نمایش یا عدم نمایش این نوار پذیرش شرایط، تصمیم گیری خواهد شد. این کوکی نیز که تحت عنوان میانافزار CookiePolicy در سیستم مدیریت و پردازش میشود، به صورت زیر در فایل آغازین برنامه مدیریت میگردد:
الف) تنظیم نیاز به دریافت پذیرش
علاوه بر Cookie Consent فوق که در یک قالب ابتدایی MVC نیز درج شدهاست، در قالب پروژههای ASP.NET Core Identity، دو گزینهی جدید دریافت اطلاعات شخصی و همچنین حذف اکانت (دادن حق فراموشی به کاربران) نیز پیشبینی شدهاست: PersonalData.cshtml
البته این صفحه جزو بستهی جدید Microsoft.AspNetCore.Identity.UI است که به همراه ASP.NET Core 2.1 ارائه میشود:
در این بسته تمام کدها و صفحات مخصوص Identity به داخل یک Class library جدید منتقل شدهاند و دیگر جزو قالب پروژهی «dotnet new mvc --auth Individual» یا همان تنظیم اعتبارسنجی به individual user accounts نیستند و باید به صورت جداگانه دریافت و تنظیم شوند (اختیاری است).
در این بین اگر به قالب پیشفرض پروژههای MVC تولید شدهی توسط ASP.NET Core 2.1 نیز دقت کنید، پشتیبانی توکار از پیشنیازهای GDPR در آن لحاظ شدهاست؛ چه از لحاظ گوشزد کردن شرایط حریم خصوصی و پذیرش آن و چه از لحاظ «پاک کردن» و «پس گرفتن» اطلاعات شخصی.
قالب و کوکی پذیرش شرایط حریم خصوصی سایت (Cookie Consent)
اگر قالب پیشفرض یک پروژهی ASP.NET Core 2.1 را اجرا کنید، تصویر فوق را که در آن نوار پذیرش شرایط حریم خصوصی سایت در بالای صفحه درج شدهاست، مشاهده خواهید کرد.
قالب جدید نوار پذیرش شرایط حریم خصوصی در مسیر Views\Shared\_CookieConsentPartial.cshtml واقع شدهاست و در فایل layout برنامه توسط tag helper جدید Partial، رندر و نمایش داده میشود:
<partial name="_CookieConsentPartial" />
@using Microsoft.AspNetCore.Http.Features @{ var consentFeature = Context.Features.Get<ITrackingConsentFeature>(); var showBanner = !consentFeature?.CanTrack ?? false; var cookieString = consentFeature?.CreateConsentCookie(); }
الف) تنظیم نیاز به دریافت پذیرش
public void ConfigureServices(IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; });
ب) فعالسازی میانافزار مدیریت کوکی پذیرش شرایط حریم خصوصی
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { // ... app.UseCookiePolicy();
دادن حق فراموش شدن به کاربران
علاوه بر Cookie Consent فوق که در یک قالب ابتدایی MVC نیز درج شدهاست، در قالب پروژههای ASP.NET Core Identity، دو گزینهی جدید دریافت اطلاعات شخصی و همچنین حذف اکانت (دادن حق فراموشی به کاربران) نیز پیشبینی شدهاست: PersonalData.cshtml
البته این صفحه جزو بستهی جدید Microsoft.AspNetCore.Identity.UI است که به همراه ASP.NET Core 2.1 ارائه میشود:
dotnet add package Microsoft.AspNetCore.Identity.UI --version 2.1.0-rc1-final