সোর্স কোডে API কী লুকানোর সর্বোত্তম উপায়


12

অ্যাপ্লিকেশনটিতে কীভাবে একটি প্রাইভেট এপিআই কী রক্ষা করা যায় সে সম্পর্কে আমার কিছু ধারণা দরকার, বিশেষত এসি #। নেট অ্যাপ্লিকেশনটিতে।

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

আমার সাথে দু'টি কী কাজ করতে পারে: একটি পাবলিক কী (নাম হিসাবে বোঝা যায়, এটি ব্যক্তিগত হিসাবে একই যত্নের সাথে চিকিত্সা করার দরকার নেই), এবং একটি ব্যক্তিগত কী, যা অন্যের থেকে সুরক্ষিত রাখা দরকার।

আমি কীভাবে এটি করতে পারি তার কোনও ধারণাগুলি প্রশংসিত হবে।


4
আপনি কি জেনারেল বাইনারি অ্যাপ্লিকেশনটিতে অ্যাক্সেস রয়েছে এমন কাউকে কীটি (আপনার শিরোনাম থেকেই বোঝা যাচ্ছে) পড়তে বাধা দেওয়ার চেষ্টা করছেন বা সার্ভারের মাধ্যমে যাচাই করার আপনার ধারণা হিসাবে? চূড়ান্ত শেষ লক্ষ্য কি?
গ্রেগম্যাক

3
এটির সাথে অপরিচিত পাঠকদের জন্য একটি এপিআই কী ধারণাটি রূপরেখাটি উপকারী হতে পারে । একটি API কী হ'ল একটি গোপন যা কিছু সফ্টওয়্যার বিকাশকারীকে কোনও পরিষেবার সাথে যোগাযোগ করে (সাধারণত একটি ওয়েব পরিষেবা)। এটি ট্র্যাফিকের উত্স চিহ্নিত করতে, নিষেধাজ্ঞাগুলি বনাম বেনাম অ্যাক্সেসগুলি এবং পরিষেবা ব্যবহারের জন্য কীটির মালিককে বিল দিতে ব্যবহৃত হয়। আপনি এটি মাঝারি উপায়ে লুকিয়ে রাখবেন এবং আপত্তিজনকভাবে এটি সমঝোতা হলে তা প্রত্যাহার করবেন বলে আশা করা হচ্ছে। এটি পরিষেবাতে সম্পূর্ণরূপে জানানো দরকার, আপনি সর্বদা হারাবেন।
লার্স ভিক্লুন্ড

@ গ্রেগম্যাক হ্যাঁ, আমি অ্যাপ্লিকেশনটির তৃতীয় পক্ষের ব্যবহারকারীদের কীটি পড়তে বাধা দেওয়ার চেষ্টা করছি।
স্পেন্সার

এটি সেখানে রাখবেন না
কোডার্ট

উত্তর:


14

সংক্ষেপ:

  • আপনার কাছে একটি বিক্রেতার দ্বারা আপনাকে একটি API কী জারি করা হয়েছে যাতে আপনি তাদের এপিআই ব্যবহার করতে পারেন, এবং আপনার এই বাধ্যবাধকতা আছে যে এই চাবিটি অন্য কারও দ্বারা জানা থেকে রক্ষা করা উচিত you
  • আপনি আপনার অ্যাপ্লিকেশন কোডটিতে সেই বিক্রেতার এপিআইতে (যার জন্য API কী প্রয়োজন) কল করছেন calls
  • আপনি সেই সিস্টেমে অ্যাপ্লিকেশনটি স্থাপন করছেন যেখানে গ্রাহকরা বাইনারিগুলিতে অ্যাক্সেস পেয়ে থাকেন এবং ফলস্বরূপ কোডটি ডিসওপাইল / ডিওবাফাসেট করতে পারে বা ট্র্যাফিকের বাধা দিতে পারে

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

শেষ পর্যন্ত, যদি বাইনারিগুলি আপনার নিয়ন্ত্রণের বাইরে থাকে তবে সেগুলির সমস্ত কিছুই আপনার নিয়ন্ত্রণের বাইরে। তেমনি, যদি কেউ ট্র্যাফিককে বাধা দিতে পারে তবে তারা API কী ( সম্ভবত আপনি এসএসএল ব্যবহার করে থাকলেও ) ক্যাপচার করতে পারেন ।

আমি এটি সম্পাদন করার দুটি প্রাথমিক উপায় দেখতে পাচ্ছি, উভয়ই আপনার নিযুক্ত অ্যাপ্লিকেশনটিতে আপনার ব্যক্তিগত এপিআই কী অন্তর্ভুক্ত করে না:

প্রতিটি স্থাপনার জন্য একটি অনন্য এপিআই কী পান

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

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

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

একটি প্রক্সি ব্যবহার করুন

একটি প্রক্সি API সেট আপ করুন, যেখানে আপনার অ্যাপ্লিকেশনটি আপনার এপিআই (আপনার সার্ভারগুলিতে) কল করে এবং ফলস্বরূপ, আপনার এপিআই কী ব্যবহার করে বিক্রেতার এপিআই কল করে।

আপনার এপিআইতে অতিরিক্ত সুরক্ষা প্রয়োজন হতে পারে, উদাহরণস্বরূপ, কেবলমাত্র আপনার অ্যাপ্লিকেশন এটি ব্যবহার করছে তা নিশ্চিত করার জন্য কিছু। এটি দ্বারা করা যেতে পারে:

  • কার্যকারিতাটিকে এত নির্দিষ্ট করে তোলা আপনার অ্যাপ্লিকেশন এটি ব্যবহার করতে পারে can
  • আইপি শ্বেত তালিকা
  • আপনার সার্ভারগুলির জন্য ইতিমধ্যে কিছু বিদ্যমান লাইসেন্সিং / অনুমোদন প্রক্রিয়া
  • আপনার নিজস্ব API কী সিস্টেম যেখানে আপনি আপনার গ্রাহকদের কীগুলি ইস্যু করতে পারবেন

এখানে মনে রাখার বিষয়টি হ'ল আপনাকে এটি করার অনুমতি দেওয়া হতে পারে না। আপনার বিক্রেতার পরিষেবার শর্তাদি বা আইনী চুক্তি থাকতে পারে যা আপনাকে "একটিগ্রাহ্য পরিষেবা" বা প্রক্সি তৈরি করতে বাধা দেয়, তাই আপনার সাথে এটি পরীক্ষা করা দরকার।


দুর্ব্যবহার সামলানো

এমনকি যদি আপনার কীটি আপোস না হয়ে থাকে, এমনকি যদি আপনার কোনও গ্রাহক বিক্রেতাকে আপনার কীটি ব্লক করে তোলে এমন কিছু ঘটছে, হঠাৎ করে আপনার সমস্ত গ্রাহক অক্ষম হয়ে গেছে, এবং আপনার একমাত্র ফিক্স হ'ল অন্যকে আপডেট করা।

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

মুষ্টিমেয় ক্লায়েন্টদের বাইরে যেকোন কিছুর জন্য এটির রসদ দ্রুত অদলযোগ্য হয়ে উঠবে।

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


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

সুতরাং এটি এম্বেড করবেন না। "একমাত্র বিজয়ী পদক্ষেপ না খেলাই।"


2
"প্রতিটি স্থাপনার জন্য একটি অনন্য এপিআই কী পান" এর জন্য +1। এমনকি প্রক্সিটির সাথে একত্রে ব্যবহার করা যেতে পারে, আপনাকে দুষ্টু কীগুলি / ক্লায়েন্টদের অক্ষম করার [সীমিত] ক্ষমতা দিয়ে giving
এসভিডজেন

@ এসভিডজেন খুব ভাল বিষয়, আমি এটি নিয়ে একটি অংশ যুক্ত করেছি। ধন্যবাদ।
গ্রেগম্যাক

1
+1, সর্বজনীন কী আপনাকে প্রায় অদৃশ্যভাবে দংশন করবে ***
ওয়াট বার্নেট

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

@ স্পেন্সার "প্রক্সিটি সম্ভবত প্রশ্নটি ছাড়িয়েছে" কেন? এটি অযৌক্তিক বলে মনে হচ্ছে এবং কীটি বিতরণ করা সম্ভবত আপনার এনডিএ লঙ্ঘন করবে।
অ্যান্ডি

5

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

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