আমি কীভাবে আমার ওপেন সোর্স প্রকল্পে গোপনীয় তথ্য গোপন করতে পারি?


13

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

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

আমি এই উত্তরহীন প্রশ্নটি পেয়েছি যা আমার মতো একই সমস্যা।

তবে আমি সাধারণভাবে জানতে চাই যে কোনও ওপেন সোর্স প্রকল্পে কীভাবে গোপনীয় তথ্য লুকানো হয়।

আমার একটা ধারণা আছে

  • "<সেক্রেট কী এখানে"> এর মতো উত্স কোডে কোনও স্থানধারক রয়েছে এবং কেবলমাত্র মুক্তির জন্য বাইনারি তৈরি করার সময় তা পূরণ করুন? (Yuck!)

কোন শালীন ধারণা?


1
এটি করার একমাত্র নিরাপদ উপায়। আপনি নিজের গোপন কীটিও এনকোড করার জন্য pgp এনক্রিপশন ব্যবহার করতে পারেন, তবে কেবল আপনি এটিকে ডিকোড করতে পারেন তবে কেন এটি প্রকাশ করা মোটেই বিরক্ত করবেন না।
প্রেসকোট

এই প্রশ্নটি পরীক্ষা করতে পারে: প্রোগ্রামার্স.সটাকেক্সচেঞ্জ / প্রশ্ন / ১/০৯71/২ - এটি ড্রপবক্স এপিআই কী সম্পর্কে নয়, তবে সাধারণ বার্তাটি একই।
tmadmers

গিট-ক্রিপ্ট আপনার জন্য তৈরি করা হয়েছে :) github.com/AGWA/git-crypt
nha

উত্তর:


14

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

কোডে স্থানধারক (হার্ডকোডযুক্ত মান)

কোডে স্থানধারক - যেমন প্রস্তাবিত ছিল - যা কোডটি পরিবর্তন করা সহজ (সংকলনের প্রয়োজন ছাড়াই) গতিশীল প্রোগ্রামিং ভাষায় করা সবচেয়ে বুদ্ধিমান এবং সহজ iest আমি অনেকগুলি ওপেন সোর্স প্রকল্প দেখেছি যেমন এটির সাথে মিডিয়াউইকি LocalSettings.php

এই কৌশলের সঙ্গে downside হয় যে কী হার্ডকোডেড হয়। সুতরাং যদি প্রোগ্রামটি বাইনারি হিসাবে বিতরণ করা হয় তবে কী-হার্ড-কোডযুক্ত কীটি বিশেষভাবে রক্ষণাবেক্ষণযোগ্য করে না।

কনফিগারেশন পাঠ্য ফাইল

আপনি কনফিগারেশন পাঠ্য ফাইলগুলি প্রয়োগ করে এটি করতে পারেন , যেমন প্রোগ্রাম / অ্যাপ্লিকেশন কোনও কনফিগারেশন ফাইল অনুসন্ধান করে এবং সেগুলি থেকে মানগুলি পড়ে। আপনি স্থানধারীদের সাথে একটি নমুনা কনফিগারেশন চেক ইন করতে পারেন তবে আপনার মেশিনে আসল কনফিগারেশন স্থানীয় থাকতে পারে।

আপনার ক্ষেত্রে আপনি key.confআসল কী দিয়ে একটি পাঠ্য ফাইল তৈরি করতে পারেন , প্রোগ্রামটিকে সেই ফাইলটি ব্যবহার করতে দিন এবং এটি সংস্করণ নিয়ন্ত্রণ দ্বারা উপেক্ষা করা উচিত। আপনি সহায়তার জন্য, key.conf.exampleএকটি বোগাস কী সহ একটি পাঠ্য ফাইলে যাচাই করে দেখতে পারেন- আপনার প্রোগ্রাম / অ্যাপ্লিকেশনটি সঠিক ফাইলটিতে আসল কী যুক্ত করতে ব্যবহারকারীকে একটি সহায়ক ত্রুটি বার্তা তৈরি করেছে তা নিশ্চিত করুন।

কিছু প্রোগ্রামিং ভাষার এপিআই রয়েছে যা এটি আপনার জন্য স্বয়ংক্রিয়ভাবে সরবরাহ করে, যেমন:

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

অগ্রাধিকার দর্শন বা একটি পিছনে অফিস অ্যাপ্লিকেশন মাধ্যমে

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

মিডিয়াউইকি LocalSettings.phpপ্রাথমিক ইনস্টলেশন প্রক্রিয়াতে ফাইলটি স্বয়ংক্রিয়ভাবে উত্পন্ন করে একই সমাধান করেছে ।

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


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

2

সবচেয়ে সহজ উপায় হ'ল কেবল গোপনীয় তথ্য প্রকাশ করা নয়। কিছু বিকল্প:

  • প্রশ্নের মতো একটি স্থানধারক ব্যবহার করুন।
  • কীটির জন্য বিশেষত একটি শিরোনাম ফাইলটি ব্যবহার করুন, উত্স নিয়ন্ত্রণে এটি প্রতিশ্রুতিবদ্ধ করবেন না এবং কেবল এটি ব্যক্তিগতভাবে বিশ্বস্ত পক্ষগুলিতে বিতরণ করুন।

আমি ওপেন সোর্স বিকাশের জন্য দ্বিতীয় বিকল্পটি ব্যবহার করেছি কারণ এর অর্থ এটি হ'ল নির্মাণের ঠিক আগে বিশদটি পূরণ করার বিষয়ে, বা প্রতিশ্রুতি না দেওয়ার কথা মনে রাখার জন্য একটি পরিবর্তন আনার বিষয়ে আপনাকে চিন্তা করতে হবে না।


2

কারও কাছে যদি সোর্স কোড থাকে (বা বাইট কোড যা বিপরীত ইঞ্জিনিয়ার করা যেতে পারে) তবে তারা একটি ডিবাগারে কোড চালিয়ে গোপন কীটি পেতে সক্ষম হবে এবং আপনি কীটি প্রেরণ করবেন সেখানে একটি ব্রেক পয়েন্ট স্থাপন করবে।

আপনি একটি প্রাক-কম্পাইল সি লাইব্রেরি সরবরাহ করে এটি কিছুটা শক্ত করে তুলতে পারেন যা বাকী ড্রপ বাক্সে কথা বলছে, কীটি এনকোড করা আছে, তবে কীগুলি ফাঁস হবে এমন অনেকগুলি উপায় এখনও রয়েছে (উদাহরণস্বরূপ আমি স্ট্রিংগুলি ভাবছি)।

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

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