OAuth 2.0 এর ক্লায়েন্ট সিক্রেট


95

গুগল ড্রাইভ এপিআই ব্যবহার করতে, আমাকে OAuth2.0 ব্যবহার করে প্রমাণীকরণের সাথে খেলতে হবে। এবং আমি এই সম্পর্কে কিছু প্রশ্ন পেয়েছিলাম।

  1. ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট আমার অ্যাপটি কী তা সনাক্ত করতে ব্যবহৃত হয় identify তবে এটি অবশ্যই ক্লায়েন্ট অ্যাপ্লিকেশন হলে তাদের হার্ডকোড করা উচিত। সুতরাং, প্রত্যেকেই আমার অ্যাপ্লিকেশনটি ছড়িয়ে দিতে এবং উত্স কোড থেকে এগুলি বের করতে পারে। এর অর্থ কি এই যে কোনও খারাপ অ্যাপটি ভাল অ্যাপের ক্লায়েন্ট আইডি এবং গোপন ব্যবহার করে একটি ভাল অ্যাপ হওয়ার ভান করতে পারে? সুতরাং ব্যবহারকারী কোনও স্ক্রিন প্রদর্শন করবে যা কোনও খারাপ অ্যাপ্লিকেশন দ্বারা জিজ্ঞাসিত হওয়া সত্ত্বেও একটি ভাল অ্যাপ্লিকেশনটিকে অনুমতি দেওয়ার জন্য জিজ্ঞাসা করছে? যদি হ্যাঁ, আমি কি করব? বা আসলে আমার এই নিয়ে চিন্তা করা উচিত নয়?

  2. মোবাইল অ্যাপ্লিকেশনটিতে, আমরা আমাদের অ্যাপ্লিকেশনটিতে একটি ওয়েবভিউ এম্বেড করতে পারি। এবং ওয়েবভিউতে পাসওয়ার্ড ক্ষেত্রটি উত্তোলন করা সহজ কারণ যে অ্যাপ্লিকেশনটিতে অনুমতি চেয়েছে সেটি আসলে একটি "ব্রাউজার"। সুতরাং, মোবাইল অ্যাপ্লিকেশনটিতে OAuth এর কোনও সুবিধা নেই যে ক্লায়েন্ট অ্যাপ্লিকেশনটি পরিষেবা সরবরাহকারীর ব্যবহারকারীর শংসাপত্রটিতে অ্যাক্সেস করে না?


4
এছাড়াও আমি অনুমান করি যে লোকেরা তাদের ফেসবুক, টুইটার, ড্রপবক্স বা অন্যান্য শংসাপত্রগুলির জন্য জিজ্ঞাসা করলে সাধারণত সন্দেহ হয়। আমি সন্দেহ করি যে অনেক সাধারণ লোক OAuth স্পেকটিস পড়ে এবং "এখন আমি নিরাপদ" বলি কিন্তু এর পরিবর্তে সাধারণ জ্ঞান ব্যবহার করে এবং সাধারণত এমন অ্যাপ্লিকেশন ব্যবহার করে না যা তারা বিশ্বাস করে না।
ইগোর Čordaš

সত্যিই একটি দুর্দান্ত প্রশ্নের অবশ্যই আরও বেশি পয়েন্ট থাকা উচিত
শ্রাবণ

আপনি কেবল নিজের সার্ভার থেকে ক্লায়েন্টআইডি এবং গোপনীয়তা ডাউনলোড করতে এবং প্রথম সফল লগইনে এটি একটি কীচেইনে সংরক্ষণ করতে পেরেছিলেন এটি
শ্রাবণ

@ শার্ভান আমার ভুল হতে পারে তবে আমি মনে করি মূলযুক্ত ফোনে কীচেনগুলি দুর্বল, যাতে আপনার ক্লায়েন্টের গোপনীয়তা প্রকাশ্যে দেওয়া যায়।
চিচিলেট

উত্তর:


16

আমি আপনার প্রশ্নে একটি মন্তব্য লিখতে শুরু করেছিলাম তবে তারপরে জানতে পেরেছি যে এখানে অনেক কিছুই বলা উচিত তাই উত্তরে এই বিষয়ে আমার মতামত এখানে দেওয়া হল।

  1. হ্যাঁ এর বাস্তব সম্ভাবনা রয়েছে এবং এর ভিত্তিতে কিছু শোষণ ছিল। পরামর্শটি আপনার অ্যাপ্লিকেশনটিতে অ্যাপটি গোপন না রাখার জন্য নয়, বিতর্কিত অ্যাপ্লিকেশনগুলিকে এই টোকেনটি ব্যবহার করা উচিত নয় এমন অনুমানেরও একটি অংশ রয়েছে। এখন আপনি জিজ্ঞাসা করতে পারেন, তবে XYZ এর কাজ করার জন্য এটির প্রয়োজন। সেক্ষেত্রে তারা অনুমানটি সঠিকভাবে প্রয়োগ করছে না এবং আপনার সার্ভারটিকে প্রক্সি হিসাবে খুঁজে পেতে বা ব্যবহার করা আরও কঠিন করার জন্য আপনার সেই পরিষেবাটি ব্যবহার করা উচিত (সম্ভবত নয়) বা বি কিছু অবলম্বন পদ্ধতি ব্যবহার করে টোকেন সুরক্ষিত করার চেষ্টা করা উচিত।

    উদাহরণস্বরূপ, অ্যান্ড্রয়েডের জন্য ফেসবুক লাইব্রেরিতে কিছু বাগ ছিল যেখানে এটি লগগুলিতে টোকেন ফাঁস করছিল, আপনি এটি সম্পর্কে এখানে আরও জানতে পারেন http://attack-secure.com/all-your-facebook-access-tokens-are-belong -তে-আমাদের এবং এখানে https://www.youtube.com/watch?v=twyL7Uxe6sk । সব মিলিয়ে আপনার তৃতীয় পক্ষের গ্রন্থাগারগুলির ব্যবহার সম্পর্কে অতিরিক্ত সতর্কতা অবলম্বন করুন (সাধারণ জ্ঞান আসলে তবে যদি টোকেন হাইজ্যাকিং হয় তবে আপনার বড় উদ্বেগ সতর্কতার সাথে আরও একটি অতিরিক্ত যুক্ত করুন)।

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


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

4
আমি আপনার মন্তব্যের প্রশংসা করি তবে এটিকে কোনওভাবেই আমার উত্তরটির সাথে সংযুক্ত করতে পারছি না ... আপনি কেন আমার উত্তর সম্পর্কে মন্তব্য করেছিলেন তা বিস্তারিতভাবে ব্যাখ্যা করতে পারেন কারণ আমি স্পষ্ট করে বলেছি যে ক্লায়েন্ট সিক্রেট বিতরণকৃত অ্যাপ্লিকেশনগুলিতে ব্যবহার করা উচিত নয় এবং অন্যটি বিষয়টি হ'ল অ্যাপ্লিকেশনগুলিতে ওআউথ ব্যবহার করা সত্ত্বেও ব্যবহারকারীদের শংসাপত্র পাওয়ার জন্য কার্যকারিতা রয়েছে যাতে ব্যবহারকারীদের অ্যাপ সরবরাহকারীর উপর নির্ভর করা উচিত এবং না ওউথের।
ইগর Čordaš

এছাড়াও আমি বুঝতে পারছি না "আপনি যদি এইচটিটিপ্সের কলটি ব্যবহার করেন" হ্যাঁ ব্যবহারকারীরা এইচটিটিপি ব্যবহার করে প্রেরণ করা ডেটাতে অ্যাক্সেস পান এবং তারা পছন্দ করেন তবে তারা প্রক্সি কলগুলিতে বিনামূল্যে হন। যেহেতু আমি বুঝতে পেরেছিলাম আপনি এপিকে বিচ্ছুরিত করার গোপনীয়তা অর্জনের জন্য এটি একটি দুর্দান্ত বিকল্প হিসাবে পরামর্শ দিচ্ছেন তবে তারপরে আপনাকে প্রথমে অ্যাপ গোপনীয়তা প্রেরণ করা উচিত নয়।
ইগর Čordaš

সুতরাং পয়েন্ট 1) খারাপ অ্যাপটির একই সিস্টেমে অ্যাক্সেস থাকা এবং একই ডিভাইস থেকে অ্যাক্সেস / রিফ্রেশ টোকেনটি পুনরুদ্ধার করা দরকার ?
গউতেহ

আপনি এই প্রসঙ্গে "একই সিস্টেম" হিসাবে বিবেচনা করছেন তা পরিষ্কার নয়। অ্যাপ্লিকেশন একটি ওয়েবভিউ তৈরি করে যাতে নিশ্চিতকরণ পৃষ্ঠাটি প্রদর্শিত হয় এবং সেই দৃশ্যে সমস্ত ডেটা অ্যাক্সেস করতে পারে (অ্যাক্সেস টোকেনের হোস্টিং কুকিজ বা url প্যারাম সহ)। কিছু ক্ষেত্রে ক্রস অ্যাপ্লিকেশন অ্যাক্সেসও সম্ভব, উদাহরণস্বরূপ যদি কোনও অ্যাপ্লিকেশন অন্য অ্যাপ্লিকেশন লগগুলিতে অ্যাক্সেস করতে পারে তবে এফবি লাইব বাগের সাথে উল্লিখিত টোকেনটি খুঁজে পেতে পারে।
ইগোর šordaš

16

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

1. ক্লায়েন্টকে পরিষেবা থেকে নয় সরাসরি ব্যবহারকারীর কাছ থেকে অনুমোদনের কোডটি পাওয়া দরকার

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

২. পুনঃনির্দেশ URL টি ক্লায়েন্ট আইডি / গোপন সাথে নিবন্ধিত

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


4
এটি আশাব্যঞ্জক, এর জন্য আপনার কি কোনও রেফারেন্স রয়েছে? এটা জেনে আশ্বস্ত হবে।
গউতেহ

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

1

২ য় প্রশ্নের উত্তরে: গুগল এপিআইএস সুরক্ষার কারণে ম্যান্ডেট দেয় যে অ্যাপে নিজেই প্রমাণীকরণ / সাইন-ইন করা যায় না (যেমন ওয়েবভিউ অনুমোদিত নয়) এবং আরও ভাল সুরক্ষার জন্য ব্রাউজার ব্যবহার করে অ্যাপের বাইরে করা দরকার যা নীচে আরও ব্যাখ্যা করা হয়েছে: https: //developers.googleblog.com/2016/08/modernizing-oauth-inteferences-in-native-apps.html


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