এখানে আমার অনুমানগুলি ভুল হলে আমাকে সংশোধন করতে দ্বিধা বোধ করবেন তবে আমি কেন জিজ্ঞাসা করছি তা আমাকে ব্যাখ্যা করতে দিন।
এমএসডিএন থেকে নেওয়া SecureString
:
গোপন রাখা উচিত যে পাঠ্য প্রতিনিধিত্ব করে। পাঠ্যটি ব্যবহার করার সময় গোপনীয়তার জন্য এনক্রিপ্ট করা হয় এবং যখন আর প্রয়োজন হয় না তখন কম্পিউটার মেমরি থেকে মুছে ফেলা হয়।
আমি এটি পেয়েছি, এটি একটি SecureString
ওভারের মধ্যে একটি পাসওয়ার্ড বা অন্যান্য ব্যক্তিগত তথ্য সংরক্ষণ করার সম্পূর্ণ জ্ঞান করে System.String
, কারণ আপনি কখন এবং কখন এটি মেমরিতে প্রকৃতপক্ষে সংরক্ষণ করতে পারেন তা নিয়ন্ত্রণ করতে পারেন কারণ System.String
:
উভয়ই অপরিবর্তনীয় এবং যখন আর প্রয়োজন হয় না, তখন আবর্জনা সংগ্রহের জন্য প্রোগ্রামিকভাবে নির্ধারিত করা যায় না; এটি হ'ল, উদাহরণটি তৈরি হওয়ার পরে কেবল পঠনযোগ্য এবং কম্পিউটার মেমরি থেকে উদাহরণটি কখন মুছে ফেলা হবে তা অনুমান করা যায় না। ফলস্বরূপ, যদি কোনও স্ট্রিং অবজেক্টে সংবেদনশীল তথ্য যেমন পাসওয়ার্ড, ক্রেডিট কার্ড নম্বর, বা ব্যক্তিগত ডেটা থাকে তবে তথ্য ব্যবহার করার পরে এটি প্রকাশের ঝুঁকি রয়েছে কারণ আপনার অ্যাপ্লিকেশনটি কম্পিউটারের স্মৃতি থেকে ডেটা মুছতে পারে না।
তবে জিইউআই অ্যাপ্লিকেশন (উদাহরণস্বরূপ, একটি এসএসএস ক্লায়েন্ট) SecureString
এর ক্ষেত্রে এটিকে একটি থেকে তৈরি করতে হবে System.String
। সমস্ত পাঠ্য নিয়ন্ত্রণগুলি এর স্ট্রিংটিকে এর অন্তর্নিহিত ডেটা টাইপ হিসাবে ব্যবহার করে ।
সুতরাং, এর অর্থ হ'ল প্রতিবার ব্যবহারকারী কোনও কী চাপলে সেখানে পুরানো স্ট্রিংটি ফেলে দেওয়া হয় এবং পাঠ্য বাক্সের অভ্যন্তরে কী মান হয় তা উপস্থাপন করতে একটি নতুন স্ট্রিং তৈরি করা হয়, এমনকি পাসওয়ার্ড মাস্ক ব্যবহার করা হলেও। এবং আমরা মান রাখতে পারি না যখন সেগুলির কোনও মান মেমরি থেকে বাদ দেওয়া হয় ।
এখন এটি সার্ভারে লগ ইন করার সময়। কি অনুমান? প্রমাণীকরণের জন্য আপনাকে সংযোগের উপরে একটি স্ট্রিং পাস করতে হবে । সুতরাং আসুন আমাদের SecureString
একটি System.String
.... তে রূপান্তর করুন এবং এখন আমাদের স্তূপের স্ট্রিং রয়েছে যাতে কোনও জঞ্জাল সংগ্রহের মধ্য দিয়ে যেতে বাধ্য করা যায় না (বা এর বাফারে 0 টি লিখুন)।
আমার বিন্দু : কোন ব্যাপার আপনি কি করবেন, লাইন বরাবর কোথাও, যে SecureString
হয় যাচ্ছে একটি রূপান্তরিত করা System.String
, এটা অর্থ কিছু সময়ে গাদা উপর অন্তত থাকবেই দিকে (গার্বেজ কালেকশন কোনো নিশ্চয়তা ছাড়াই) হবে।
আমার বক্তব্যটি নয় : এসএসএস সংযোগে স্ট্রিং প্রেরণ করার পদ্ধতি রয়েছে বা কোনও কন্ট্রোল স্টোরের স্ট্রিংকে (কাস্টম নিয়ন্ত্রণ করতে হবে) তা ছাড়ানোর উপায় আছে কিনা। এই প্রশ্নের জন্য, আপনি "লগইন ফর্ম", "নিবন্ধকরণ ফর্ম", "পেমেন্ট ফর্ম", "খাবার-আপনি-আপনার-কুকুরছানা-তবে-না-আপনার-বাচ্চাদের ফর্ম" দিয়ে "এসএসএস সংযোগ" প্রতিস্থাপন করতে পারেন, প্রভৃতি
- সুতরাং, কোন পর্যায়ে
SecureString
আসলে ব্যবহারিক হয়ে ওঠে? - কোনও
System.String
অবজেক্টের ব্যবহার পুরোপুরি নির্মূল করার জন্য কি অতিরিক্ত বিকাশের সময়টির পক্ষে মূল্যবান ? - গাদা হয়ে
SecureString
থাকা সময়ের পরিমাণকে হ্রাস করার পুরো পয়েন্টটিSystem.String
কী (শারীরিক অদলবদলের ফাইলের দিকে যাওয়ার ঝুঁকি হ্রাস করে)? - যদি কোনও আক্রমণকারী ইতিমধ্যে একটি গাদা পরিদর্শন করার উপায় রাখে তবে তার সম্ভবত সম্ভবত (ক) ইতিমধ্যে কীস্ট্রোকগুলি পড়ার উপায় রয়েছে, বা (বি) ইতিমধ্যে মেশিনটি শারীরিকভাবে আছে ... সুতরাং
SecureString
তাকে তার কাছে যাওয়া থেকে বিরত রাখতে হবে যাইহোক তথ্য? - এটি কি কেবল "অস্পষ্টতার মাধ্যমে সুরক্ষা"?
দুঃখিত যদি আমি প্রশ্নগুলি খুব ঘন উপর রাখি, কৌতূহল আমার চেয়ে আরও ভাল হয়েছে। আমার যেকোন বা সমস্ত প্রশ্নের উত্তর নির্দ্বিধায় (অথবা আমাকে বলুন যে আমার অনুমানগুলি সম্পূর্ণ ভুল)। :)
SecureString
আসলেই কোনও সুরক্ষিত স্ট্রিং নয়। এটি কেবলমাত্র সময় উইন্ডো হ্রাস করার একটি উপায় যার মধ্যে কেউ আপনার স্মৃতি পরীক্ষা করতে পারে এবং সফলভাবে সংবেদনশীল ডেটা পেতে পারে। এটি বুলেটপ্রুফ নয় এবং এটির উদ্দেশ্য ছিল না। তবে আপনি যে পয়েন্টগুলি উত্থাপন করছেন তা খুব কার্যকর। সম্পর্কিত: স্ট্যাকওভারফ্লো.