কীভাবে কোনও এপিআইয়ের অননুমোদিত ব্যবহার এড়ানো যায়?


10

আমাকে একটি "উইজেট" ডিজাইন করতে হবে, একটি স্ক্রিপ্ট যা অংশীদাররা কিছু ইউআই প্রদর্শন করতে এবং আমাদের এপিআইতে কল করার জন্য তাদের ওয়েবসাইটগুলিতে এম্বেড করবে।

মূলত এটি আমাদের API কলগুলিতে তাদের সরবরাহ করে এমন কিছু আইডির ভিত্তিতে এই সাইটগুলিতে আমাদের ডেটা প্রদর্শন করবে। আমরা যেটি এড়াতে চাই তা হ'ল কেউ এপিআইর অপব্যবহার করে এবং আমাদের ক্যাটালগের পুরোপুরি খতম করতে এটি ব্যবহার করে।

আমাদের স্ক্রিপ্টটি এম্বেড করে এমন প্রতিটি অংশীদারকে একটি সর্বজনীন কী দেওয়া হবে যা এপিআই কল করার সময় সরবরাহ করতে হবে। একটি ধারণা হ'ল স্ক্রিপ্টটি লোড করার সময় তাদের এই কী যুক্ত করতে বলা হবে, যেমন:

<script src="//initrode.com/widget/loader.js?key=xxxx"></script>

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

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

আপনি এই সমাধানটি সম্পর্কে কী ভাবেন এবং আপনি এই সীমাবদ্ধতাগুলি দিয়ে কী করবেন?


আপনি কীটি গতিশীল করতে পারেন? অংশীদার শনাক্তকারী এর MD5 হ্যাশ প্লাস ইউটিসির সময়টি নিকটতম 10 মিনিটের মতো?
ড্যান পিচেলম্যান

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

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

আমার ব্যবসায়ের সাথে এটি পরীক্ষা করা দরকার যদি এটির সার্ভার-সাইডটি গণনা করা সম্ভব হয় কিনা। অন্যথায় আমি যা ভয় পেয়েছিলাম, কেবল সমাধানই থ্রোটলিং।
এন্টোইন

উত্তর:


12

আপনার বিভিন্ন ধরণের সুরক্ষা দরকার।

প্রথমত , আপনাকে সাইট এ এর ​​কী সাইট বি তে ব্যবহার করা থেকে বিরত করতে হবে need

তত্ত্ব অনুসারে, কীটি কোনও ডোমেনে আবদ্ধ থাকলে আপনি refererশিরোনামের উপর নির্ভর করতে পারবেন না , তবে আপনি ক্লায়েন্ট সরাসরি স্ক্রিপ্ট এম্বেড করছেন, আপনি যুক্তিযুক্তভাবে ক্লায়েন্ট-এর উপর নির্ভর করতে পারেন can document.locationসরাসরি সার্ভারে সেই অবস্থানটি (বা এর অংশগুলি) প্রেরণ করা অবিশ্বাস্য; তবে আপনি এটি একটি সেশন কী তৈরি করতে ব্যবহার করতে পারেন:

  1. ক্লায়েন্ট client_keyএপিআই লাইব্রেরির অনুরোধে এম্বেড করে।
  2. সার্ভারটি এমন কোনও হোস্টকে নির্ধারণ করে যা এর API- এ অ্যাক্সেস রয়েছে।
  3. সার্ভারটি একটি সেশন কীটির জন্য "লবণ" বাছাই করে এবং এটি গ্রাহককে পাঠাগার সহ পাঠায় [বা অন্য প্রাক-অ্যাথ এক্সচেঞ্জের অংশ হিসাবে]।
  4. ক্লায়েন্ট একটি session_keyব্যবহার গণনা করে hash(document.location.host + session_salt)
  5. ক্লায়েন্ট একটি API কলের জন্য session_key+ client_keyব্যবহার করে।
  6. সার্ভারটি client_keyঅধিবেশনটির হোস্ট এবং "নুন" সন্ধান করে, হ্যাশ গণনা করে এবং সরবরাহকারীর সাথে তুলনা করে কলটিকে বৈধতা দেয় client_key

দ্বিতীয়ত , আপনার হ্যাকার হ্যাঙ্ককে আপনার এপিআই দিয়ে যা ইচ্ছা তা করতে ডিবাগ কনসোলটি খুলতে বা সাইটের এ এ পরিবর্তিত ক্লায়েন্ট ব্যবহার করা থেকে বাধা দেওয়া উচিত।

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

  • অনুরোধ / দ্বিতীয় / সেশন এবং অনুরোধ / ঘন্টা / সেশনের সংখ্যা সীমাবদ্ধ করুন। (ক্রিয়াকলাপে স্পাইকগুলি সম্ভবত যুক্তিসঙ্গত, তবে কোনও একক ক্লায়েন্টের উপরের গড় ট্র্যাফিক ধরে রাখা যায় না ))
  • সেশনের সংখ্যা / আইপি / ঘন্টা সীমাবদ্ধ করুন।
  • অনুরোধের সংখ্যা / আইপি / ঘন্টা সীমাবদ্ধ করুন। স্পাইকগুলিকে মঞ্জুরি দিন, তবে একটি আইপি থেকে ভারী ট্র্যাফিক বজায় রাখেনি।

তৃতীয়ত , আপনি সম্ভবত ইতিমধ্যে করছেন: ট্র্যাফিক এনক্রিপ্ট করুন। অবশ্যই, এনএসএ এটি দেখতে পাবে; তবে হ্যাকার হ্যাঙ্কের সম্ভাবনা কম।


0

সুরক্ষিত সংস্থানগুলিতে আপনার জাভাস্ক্রিপ্ট ফাইলগুলি তৈরি করার মতো শোনার মতো। এবং একই সাথে এক ধরণের টোকেন প্রজন্মের সাথে এটি বান্ডিলিং। এটা আকর্ষণীয়.

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

তবে আপনাকে আইপি অ্যাড্রেসগুলি "শ্বেতলিস্ট" করতে হবে, অন্যথায় যে কোনও হ্যাকার সামনের দরজার সামনে আসতে পারে।

আমি সন্দেহবাদী ছিলাম, তবে আমি আসলে ভাবছি আপনার স্কিমটি বেশ ভালভাবে কাজ করে। যদি 1) .js ফাইল এবং পরবর্তী API কলগুলি টিএলএস (যেমন SSL বা https) দিয়ে করা হয়, এবং 2) আইপিগুলি শ্বেত তালিকাভুক্ত করা হয়। তারপরে আমি একটি সাহসী বক্তব্য দেব এবং বলব আমি মনে করি আপনি এমনকি পিসিআই (ক্রেডিট কার্ড) মিথস্ক্রিয়া জন্য একটি সুরক্ষা পর্যালোচনা পাস করবেন।

আইএমএইচও ... তবে আপনি যদি কেবল ক্রেডিট কার্ড (পিসিআই) বা ব্যক্তিগত / ব্যক্তিগত তথ্য (পিআইআই) এর পরিবর্তে কোম্পানির মালিকানাধীন তথ্যগুলি রক্ষা করার চেষ্টা করছেন তবে আপনি কতটা নির্ভর করে তার উপর নির্ভর করে এটি এসএসএল ছাড়াও সম্ভবত ভাল আপনার ক্যাটালগ প্রকাশের ঝুঁকি নিতে ইচ্ছুক।

বা এটিকে এভাবে রাখুন: এসএসএল দিয়ে, একজন ডেডিকেটেড হ্যাকার আপনার ক্যাটালগটি পেতে পারেনি । (যদি তারা এসএসএল না ভাঙে তবে তারা অ্যামাজনকেও ভেঙে ফেলতে পারে)। এসএসএল ব্যতীত, একজন ডেডিকেটেড হ্যাকার আপনার কলগুলি, আইপি স্পুফ এবং আপনার ক্যাটালগটিকে নীচে নামাতে পারে। সুতরাং এটি ঝুঁকি নিয়ে রায় দেওয়ার মতো ধরণের।

আমি আইপি শ্বেতলিস্টের সাথে বিতরণ করার একটি উপায় সম্পর্কে চিন্তা করার চেষ্টা করছি কারণ এটি সাধারণত পরিচালনা করার জন্য একটি ব্যথা;) পূর্ণ-বিকাশযুক্ত অউথ না গিয়ে। আমি নুডল করব।

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