آشنایی با کلاس SecureString در Net.

سامان

به طور کلی در بعضی سناریو ها با اطلاعاتی حساس مانند رمز عبور ، شماره کارت اعتباری و یا اطلاعات شخصی افراد مواجه می شویم و این اطلاعات را در سراسر برنامه برای استفاده و اقدامات بیشتر بکار میبریم .عموماً ما از کلاس System.String استفاده می کنیم .سؤالی که پیش می آید این است که آیا این کلاس از امنیت لازم برخوردار است ؟

در این مقاله نحوه استفاده از کلاسی خاص برای افزایش امنیت با نام (SecureString) را شرح خواهیم داد

محدودیت های System.String

متغیر های رشته ای در پشته ایجاد می شوند و با Garbage Collector ها برای آزاد سازی حافظه اشغال شده حذف می شوند .در برخی موارد ممکن است که از روی حافظه سرور پس از انجام عملیات پاک سازی به مدت 2 ساعت نیز حذف نشوند .بنا براین همیشه احتمال خطر نمایش این اطلاعات به این دلیل که نرم افزار شما نتوانسته آنها را حدف کند ، وجود دارد .

راه حل :

Net. نسخه 2.0 و به بعد یک راه امن برای مدیریت اطلاعات حساس را فراهم کرد و آن ایجاد کلاس SecureString است که از System.Object.SecureString ارث بری می کند که باعث میشود که Garbage Collector ها قادر به دریافت و یا کپی این اطلاعات نباشند .

این کلاس در فضای نام System.Security قرار دارد .این کلاس به صورت پیش فرض رابط IDisposable را پیاده سازی می کند .هنگامی که عملیات بر روی این کلاس به اتمام می رسد ، متغیرها متد Dsipose را در یک بلوک Try/Catch فراخوانی می کنند .روشی دیگر برای رهایی از Garbage Collector ها استفاده از این کلاس در Statement جاری میباشد .

متغیر SecureString مشابه متغیر رشته ای می باشد که حاوی مقادیر متن می باشد. اگرچه مقدار SecureString رمز نگاری شده است و از طریق نرم افزار مربوط به حافظه سیستم و یا Garbage Collector های موجود در Net Framework. قابل تشخیص می باشند .حتی اگر کاربر با هدف های مخرب یک رونوشت از آن در اختیار داشته باشد ، محتوای این متغیر ها قابل دسترسی و بازخوانی نمی باشند .

برای ذخیره  این instance و پیش گیری از در معرض خطر قرار گرفتن اطلاعات ، هیچ کدام از از متد های اعضا و یا خاصیت های مربوط به کلاس مجاز به ویرایش یا مقایسه مقادیر نیستند .اگر چه برخی اعضا از کلاس System.Runtime.InteropSerivce.Marshal امکان تغییر و ویرایش این مقادیر را در instance دارند .

برای درک بیشتر به مثال زیر توجه فرمایید :

منبع: آشنایی با کلاس SecureString در Net.

3
اشتراک گذاری
سامان
سامان

فارغ التحصیل کارشناسی نرم افزار، علاقه مند به برنامه نویسی، طراحی وب، تکنولوژی های نوین، یادگیری و فیلم

پاسخ دهید