সি #: কেন একটি সমাবেশে স্বাক্ষর করবেন?


146

কিছু সি # কোডে আমি (ভিজ্যুয়াল স্টুডিও 2005-এ) গ্রহণ করেছি, আমি লক্ষ্য করেছি যে সমাবেশগুলি সমস্ত একই .snkফাইলের সাথে স্বাক্ষরিত ।

  • পূর্ববর্তী লেখক কেন এইভাবে সম্মেলনে স্বাক্ষর করতেন?
  • অ্যাসেমব্লিতে স্বাক্ষর করা কি প্রয়োজনীয় এবং সই না করাতে কী ভুল হবে?
  • সম্মেলনে স্বাক্ষর করার ক্ষেত্রে কী অসুবিধা রয়েছে - এটি কি বিলম্বের কারণ হয়?

উত্তর:


186

পূর্ববর্তী লেখক কেন এইভাবে সম্মেলনে স্বাক্ষর করতেন?

ধারণা নেই, সম্ভবত তিনি চেয়েছিলেন যে তাঁর সমস্ত অ্যাসেমব্লিকে একই কী দিয়ে স্বাক্ষর করা হোক।

অ্যাসেমব্লিগুলিতে স্বাক্ষর করা কি প্রয়োজনীয় এবং এটিতে স্বাক্ষর না করে কী ভুল হবে?

না, এটি প্রয়োজনীয় নয় তবে এটি এমন একটি প্রক্রিয়া যা আপনাকে কোনও সমাবেশের সত্যতা নিশ্চিত করতে দেয়। এটি আপনাকে এটি নিশ্চিত করার অনুমতি দেয় যে কোনও সমাবেশের সাথে কোনও হস্তক্ষেপ করা হয়নি এবং প্রকৃতপক্ষে এটিই এই লেখকের উত্স। এগুলি জিএসি-তে রাখতে চাইলে এটিও প্রয়োজনীয়।

সম্মেলনে স্বাক্ষর করার ক্ষেত্রে কী অসুবিধা রয়েছে - এটি কি বিলম্বের কারণ হয়?

স্বাক্ষরযুক্ত সমাবেশগুলি কেবলমাত্র অন্যান্য স্বাক্ষরিত সমাবেশগুলিই লোড করতে পারে। এছাড়াও এগুলি একটি নির্দিষ্ট সংস্করণে আবদ্ধ রয়েছে যার অর্থ আপনার যদি অন্য সংস্করণটি ব্যবহার করতে চান তবে আপনাকে বাধ্যতামূলক পুনর্নির্দেশগুলি ব্যবহার করতে হবে বা অ্যাপ্লিকেশনটি পুনরায় কম্পাইল করতে হবে। স্বাক্ষর যাচাইয়ের কারণে ওভারহেডের সামান্য পারফরম্যান্স রয়েছে তবে এটি এতটা কম যে আপনার সম্পর্কে উদ্বিগ্ন হওয়া উচিত নয়।


2
নোট করুন যে জিএসি তে রাখার সময় স্বাক্ষরগুলির যাচাইকরণ আর হয় না (নেট নেট ২.০ থেকে); এটি কেবল একবার ঘটবে, যখন এটি জিএসি-তে যুক্ত হবে
আবেল

1
আজকাল সাইন ইন করার বিষয়ে আপনার কী ধারণা? ওয়েব ভিত্তিক সিস্টেমে? আমি যদি সঠিক, ইনস্টলড সফটওয়্যারগুলির বিষয়ে কথা বলার সময় এটি কেবল প্রয়োজনীয় ছিল, তাই না? আমি যদি টিএফএস ব্যবহার করে আমার অ্যাপটি অ্যাজুরেতে প্রকাশ করি তবে আমি জানি যে এটি কোনও छेड़छाड़ হয়নি, তাই না? বা আমি কিছু সুরক্ষা অংশ অনুপস্থিত?
রিক ওল্ফ

প্রথম প্রশ্নে: তিনি এমন একটি প্রকল্প থেকে প্রজেক্ট টেমপ্লেট তৈরি করেছিলেন যার সমাবেশে স্বাক্ষর কী ফাইল রয়েছে, তারপরে তিনি সেই প্রকল্প টেম্পলেটটি অন্য স্টাফ তৈরি করতে ব্যবহার করেছিলেন এবং কী ফাইলটি প্রতিস্থাপন করতে ভুলে গিয়েছিলেন। (কেবল "তিনি" "আমার" সাথে প্রতিস্থাপন করুন এবং আপনি জানেন যে আমি এই সকালে কী করছিলাম :))। সুতরাং, এটি দুর্ঘটনাজনক।
হার্ডিওয়েলেস

33

আপনি যদি অ্যাসেম্বলিগুলিকে জিএসি- তে রাখতে চান তবে আপনাকে সাইন ইন করতে হবে ।

আপনি যদি একটি নির্বাহযোগ্যকে স্বাক্ষর করেন তবে তার সাথে লিঙ্কযুক্ত যে কোনও শ্রেণিকালীন গ্রন্থাগারগুলিতেও স্বাক্ষর করা দরকার। যদি আপনি তৃতীয় পক্ষের লাইব্রেরি ব্যবহার করেন (বিশেষত আপনার যদি অ্যাক্টিভএক্স নিয়ন্ত্রণ বা অনুরূপ ব্যবহারের প্রয়োজন হয় ) তবে এটি কঠিন হতে পারে ।

রিচার্ড গ্রিমেস নিরাপত্তা সম্পর্কে একটি ভাল কর্মশালার লিখেছি .NET এবং যে এই সম্পর্কে একটি অধ্যায় রয়েছে: নিরাপত্তা কর্মশালা

সমস্ত এসেম্বলিতে একই .snk ফাইলের সাথে স্বাক্ষর হওয়ার কারণ হতে পারে যদি তিনি কোড কভারেজ সহ ইউনিট টেস্টিং ব্যবহার করেন। কোড কভারেজটি করতে সক্ষম হবেন (কমপক্ষে ভিজ্যুয়াল স্টুডিও 2005 এর টেস্টিং সংস্করণে তৈরি সরঞ্জামগুলির সাথে) এবং যদি অ্যাসেমব্লিগুলি স্বাক্ষরিত হয় তবে আপনাকে সাইন ইন করার জন্য .snk ফাইলগুলি কী ব্যবহার করা হবে তা নির্দিষ্ট করতে হবে তবে আমি মনে করি আপনি কেবলমাত্র এটি করতে পারেন পুরো সমাধানের জন্য একটি .snk ফাইল নির্দিষ্ট করুন, সুতরাং আপনি যদি বিভিন্ন .snk ফাইলের সাহায্যে বিভিন্ন শ্রেণীর লাইব্রেরিগুলিতে স্বাক্ষর করেন তবে আপনি কেবল একবারে তাদের মধ্যে একটিতে কোড কভারেজ পরীক্ষা করতে পারবেন।


17

অ্যাসেমব্লিকে স্বাক্ষর করার একটি খুব গুরুত্বপূর্ণ কারণটি যাতে আপনি নিশ্চিত হন যে এটি আপনার সমাবেশ। যেহেতু প্রাইভেট কীটি আপনার, তাই অন্য কেউ সেই একই কী দিয়ে কোনও অ্যাসেমব্লিতে স্বাক্ষর করতে পারবেন না। এর অর্থ হ'ল যখন কোনও অ্যাসেমব্লির পাবলিক কী আপনার জানা থাকে (আপনি GetType().Assembly.GetName().GetPublicKey()ফাংশনটি ব্যবহার করে এটি পুনরুদ্ধার করতে পারেন ), সমাবেশটি আপনার এবং এটিতে কোনও হস্তক্ষেপ করা হয়নি।


1

DLL সই করার সমস্ত ব্যবহার সত্ত্বেও, মাত্র দুটি কারণে ডেল সই করা উচিত

1. সংস্করণ

2. প্রমাণীকরণ

ক। সংস্করণটি বোঝায় যে ডেলটি কী সংস্করণটি তৈরি করেছে এবং এটি জিএসি তে ঠেলে দেওয়ার সময় একই নামের সাথে দুটি ডেল উপস্থিত থাকতে পারে তবে ভিন্ন সংস্করণ রয়েছে

খ। প্রমাণীকরণটি ডেলটি টেম্পার্ড করা হয়নি এবং এটি তৈরি করার সময় একই উপস্থিত রয়েছে কিনা তা বোঝায়।

আপনি যদি বেসিকগুলি এবং dll স্বাক্ষর সম্পর্কে আরও জানতে চান তবে আপনি এখানে উল্লেখ করতে পারেন


1
আজকাল সাইন ইন করার বিষয়ে আপনার কী ধারণা? ওয়েব ভিত্তিক সিস্টেমে? আমি যদি সঠিক, ইনস্টলড সফটওয়্যারগুলির বিষয়ে কথা বলার সময় এটি কেবল প্রয়োজনীয় ছিল, তাই না? আমি যদি টিএফএস ব্যবহার করে আমার অ্যাপটি অ্যাজুরেতে প্রকাশ করি তবে আমি জানি যে এটি কোনও छेड़छाड़ হয়নি, তাই না? বা আমি কিছু সুরক্ষা অংশ অনুপস্থিত?
রিক ওল্ফ

1
আজকাল কেন আমাদের একটি ডেল সই করা উচিত তার কোন কারণ আমি দেখতে পাচ্ছি না, এটি অ্যাজুরেতে প্যাস সলিউশন হিসাবে স্থাপন করা হবে। তবে আপনার যদি আইএএস সমাধান হয়, আপনি একই অ্যাপ্লিকেশনটিতে ওয়েব অ্যাপ্লিকেশন দ্বারা ডেলটি পুনরায় ব্যবহার করতে পারেন। যা আমি সুপারিশ করি না। আমাদের তাদের জিপিএর (মাইক্রোসার্ভাইস আর্কিটেকচার) থেকে ডেল ব্যবহার না করে এপিআই ইউআরএল মাধ্যমে কল করা উচিত।
কার্তিকেইকন ভি কে

1

বিদ্যমান উত্তরগুলি ছাড়াও, আমি যুক্ত করব যে যখন আপনার ডিএলএল গতিশীলভাবে তৃতীয় পক্ষের সফ্টওয়্যার দ্বারা লোড এবং গ্রাস করতে যাচ্ছে তখন আপনাকে অবশ্যই স্বাক্ষরটি ব্যবহার করতে হবে । এটি প্রতি প্রযুক্তিগত প্রয়োজন নয় তবে এটি যৌক্তিক, অতএব খুব সাধারণ, তৃতীয় পক্ষের সফ্টওয়্যার প্রযোজক সুরক্ষা উদ্বেগের কারণে এই জাতীয় নীতি প্রয়োগ করে।

উদাহরণস্বরূপ যেখানে আপনাকে কোনও সমাবেশে স্বাক্ষর করতে হবে:

  • উইন্ডোজ শেল / উইন্ডোজ এক্সপ্লোরার এক্সটেনশনের বিকাশ, যেমন: উইন্ডোজ এক্সপ্লোরারের জন্য প্রসঙ্গ মেনু এক্সটেনশন
  • ভিজ্যুয়াল স্টুডিও এক্সটেনশনের বিকাশ, যেমন: প্রকল্প / আইটেম টেম্পলেট উইজার্ড জিইউআই

0

স্বাক্ষর এবং সমাবেশ গুরুত্বপূর্ণ। কেবলমাত্র সেই পিসিতেই ইনস্টল করা হয়েছে যে এক্সেল বা সমাবেশটি নিশ্চিত করতে।

উদাহরণস্বরূপ: আপনি যদি সেই ফোল্ডারটি অনুলিপি করে অন্য কোনও পিসিতে রাখেন তবে এটি কার্যকর হয় না। যেহেতু এটি কেবলমাত্র সেই মেশিনে সেই সমাবেশে সাইন ইন করছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.