দৈর্ঘ্যে, এই প্রশ্নটি কিছুটা ভিন্ন আকারে সম্বোধন করা হয়েছে:
বিশুদ্ধ প্রমাণীকরণ
তবে এটি এটি সার্ভার-সাইড থেকে সম্বোধন করে। এর ক্লায়েন্ট-পাশ থেকে এটি তাকান। যদিও আমরা এটি করার আগে একটি গুরুত্বপূর্ণ উপস্থাপনা আছে:
জাভাস্ক্রিপ্ট ক্রিপ্টো হতাশ
এ সম্পর্কে মাতাসানোর নিবন্ধটি বিখ্যাত, তবে এতে থাকা পাঠগুলি অত্যন্ত গুরুত্বপূর্ণ:
https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/august/javascript-cryptography-considered-harmful/
সংক্ষেপ:
- একটি মধ্যম আক্রমণ মধ্যাহ্নে আপনার ক্রিপ্টো কোডটি এর সাথে প্রতিস্থাপন করতে পারে
<script>
function hash_algorithm(password){ lol_nope_send_it_to_me_instead(password); }</script>
- একটি ম্যান-ইন-দ্য মিডল আক্রমণ এমন একটি পৃষ্ঠার তুলনায় তুচ্ছ যা কোনও নন-এসএসএল সংযোগের মাধ্যমে যে কোনও সংস্থান সরবরাহ করে।
- আপনার একবার এসএসএল হয়ে গেলে আপনি যে কোনও উপায়ে রিয়েল ক্রিপ্টো ব্যবহার করছেন।
এবং নিজের নিজস্ব একটি যুক্তকরণ যুক্ত করতে:
- একটি এক্সএসএস আক্রমণ একটি সফল আক্রমণকারী আপনার ক্লায়েন্টের ব্রাউজারে কোড কার্যকর করতে পারে, এমনকি আপনি এসএসএল ব্যবহার করছেন - এমনকি যদি আপনি প্রতিটি হ্যাচকে নীচে ফেলে রাখেন তবে আপনার আক্রমণকারী যদি মৃত্যুদণ্ড কার্যকর করার উপায় খুঁজে পায় তবে আপনার ব্রাউজার ক্রিপ্টো এখনও ব্যর্থ হতে পারে অন্য কারও ব্রাউজারে জাভাস্ক্রিপ্ট কোড।
আপনি জাভাস্ক্রিপ্ট ক্লায়েন্ট ব্যবহার করতে চাইলে এটি প্রচুর পরিমাণে RESTful প্রমাণীকরণের স্কিমকে অসম্ভব বা নির্বিকার করে। দেখা যাক!
এইচটিটিপি বেসিক আথ
প্রথম এবং সর্বাগ্রে, এইচটিটিপি বেসিক আথ। সহজতম স্কিম: প্রতিটি অনুরোধের সাথে কেবল একটি নাম এবং পাসওয়ার্ড পাস করুন।
এটি অবশ্যই SSL এর প্রয়োজন, কারণ আপনি প্রতিটি অনুরোধের সাথে একটি বেস 64 (বিপরীতভাবে) এনকোডড নাম এবং পাসওয়ার্ডটি পাস করছেন। যে কেউ লাইনে শুনছেন তারা তুচ্ছভাবে ব্যবহারকারীর নাম এবং পাসওয়ার্ড বের করতে পারবেন। বেশিরভাগ "বেসিক অ্যাথটি নিরাপত্তাহীন" যুক্তিগুলি "বেসিক অ্যাথ ওভার এইচটিটিপি" র একটি জায়গা থেকে আসে যা একটি ভয়ঙ্কর ধারণা।
ব্রাউজারটি বেকড-ইন এইচটিটিপি বেসিক অ্যাথ সমর্থন সরবরাহ করে তবে এটি পাপ হিসাবে কুৎসিত এবং আপনার অ্যাপ্লিকেশনটির জন্য সম্ভবত এটি ব্যবহার করা উচিত নয়। বিকল্প, যদিও, জাভাস্ক্রিপ্টে ব্যবহারকারীর নাম এবং পাসওয়ার্ড স্ট্যাশ করা হয়।
এটি সবচেয়ে বিশ্রামযুক্ত সমাধান ful সার্ভারের কোনও অবস্থার কোনও জ্ঞানের প্রয়োজন নেই এবং ব্যবহারকারীর সাথে প্রতিটি পৃথক মিথস্ক্রিয়াকে প্রমাণীকরণ করে। কিছু REST উত্সাহী (বেশিরভাগ স্ট্রোম্যান) জোর দিয়ে বলেন যে কোনও প্রকারের রাজ্য বজায় রাখা মিথ্যাবাদী এবং যদি আপনি অন্য কোনও প্রমাণীকরণের পদ্ধতিটি মনে করেন তবে তা মুখের সামনে পড়ে যাবে। এই ধরণের মান-সম্মতিতে তাত্ত্বিক সুবিধাগুলি রয়েছে - এটি আপাচি বক্সের বাইরে সমর্থিত - আপনি যদি আপনার হৃদয় পছন্দ করেন তবে আপনি htaccess ফাইল দ্বারা সুরক্ষিত ফোল্ডারে ফাইলগুলিতে আপনার বস্তু সংরক্ষণ করতে পারেন!
সমস্যা ? আপনি ক্লায়েন্ট-সাইডে একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ডে ক্যাচ করছেন। এটি এপ্লাই.আর কে আরও ভাল ক্র্যাক দেয় - এমনকি এক্সএসএস দুর্বলতার সবচেয়ে মৌলিকতার ফলে ক্লায়েন্ট তার ব্যবহারকারীর নাম এবং পাসওয়ার্ডকে একটি খারাপ সার্ভারে বিমিং করতে পারে। পাসওয়ার্ডটি হ্যাশ করে এবং সল্ট দিয়ে আপনি এই ঝুঁকি হ্রাস করার চেষ্টা করতে পারেন, তবে মনে রাখবেন: জাভাস্ক্রিপ্ট ক্রিপ্টো হতাশ । আপনি ব্রাউজারের বুনিয়াদি এথ সমর্থনকে রেখে এই ঝুঁকি হ্রাস করতে পারেন, তবে .. পাপ হিসাবে কুরুচিপূর্ণ, যেমনটি পূর্বে উল্লিখিত হয়েছে।
এইচটিটিপি ডাইজেস্ট আথ
JQuery দিয়ে ডাইজেস্ট প্রমাণীকরণ কি সম্ভব?
আরও একটি "সুরক্ষিত" লেখক, এটি একটি অনুরোধ / প্রতিক্রিয়া হ্যাশ চ্যালেঞ্জ। জাভাস্ক্রিপ্ট ব্যতীত ক্রিপ্টো হতাশহীন , সুতরাং এটি কেবল এসএসএল-এ কাজ করে এবং আপনাকে এখনও ক্লায়েন্ট পক্ষের ব্যবহারকারীর নাম এবং পাসওয়ার্ড ক্যাশে করতে হবে, এটি HTTP বেসিক এথের চেয়ে জটিল করে তোলে তবে আর নিরাপদ হয় না ।
অতিরিক্ত স্বাক্ষর পরামিতিগুলির সাথে প্রমাণীকরণের অনুসন্ধান করুন।
আরেকটি আরও "সুরক্ষিত" প্রমাণীকরণ, যেখানে আপনি আপনার পরামিতিগুলি ননস এবং টাইমিং ডেটা (পুনরাবৃত্তি এবং সময় আক্রমণ থেকে রক্ষা করতে) দিয়ে এনক্রিপ্ট করেন এবং পাঠান। এর সর্বোত্তম উদাহরণগুলির মধ্যে একটি হ'ল ওআউথ ০.০ প্রোটোকল, যা আমি যতদুর জানি, একটি আরএসটি সার্ভারে প্রমাণীকরণ প্রয়োগের একটি দুর্দান্ত স্টোনকিং উপায়।
http://tools.ietf.org/html/rfc5849
ওহ, তবে জাভাস্ক্রিপ্টের জন্য কোনও OAuth 1.0 ক্লায়েন্ট নেই। কেন?
জাভাস্ক্রিপ্ট ক্রিপ্টো হতাশ , মনে আছে। জাভাস্ক্রিপ্টটি এসএসএল ছাড়াই ওআউথ ১.০ এ অংশ নিতে পারে না এবং আপনাকে এখনও ক্লায়েন্টটির ব্যবহারকারীর নাম এবং পাসওয়ার্ড স্থানীয়ভাবে সংরক্ষণ করতে হবে - যা এটিকে ডাইজেস্ট আথের মতো একই বিভাগে রাখে - এটি এইচটিটিপি বেসিক লেখার চেয়ে জটিল তবে এটি আর নিরাপদ নয় ।
টোকেন
ব্যবহারকারী একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রেরণ করে এবং বিনিময়ে একটি টোকেন পায় যা অনুরোধগুলি প্রমাণীকরণ করতে ব্যবহার করা যেতে পারে।
এটি HTTP বেসিক এথের তুলনায় প্রান্তিকভাবে সুরক্ষিত, কারণ ব্যবহারকারীর নাম / পাসওয়ার্ডের লেনদেন শেষ হওয়ার সাথে সাথে আপনি সংবেদনশীল ডেটা বাতিল করতে পারেন। টোকেনগুলি "রাজ্য" গঠন করে এবং সার্ভার বাস্তবায়নকে আরও জটিল করে তোলে বলে এটি কম কম রেস্টওফুলও।
এসএসএল এখনও
যদিও ঘষা, আপনি এখনও একটি টোকেন পেতে যে প্রাথমিক ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রেরণ করতে হবে। সংবেদনশীল তথ্য এখনও আপনার আপোসযুক্ত জাভাস্ক্রিপ্টকে স্পর্শ করে।
আপনার ব্যবহারকারীর শংসাপত্রগুলি সুরক্ষিত করার জন্য, আপনাকে এখনও আক্রমণকারীদের আপনার জাভাস্ক্রিপ্টের বাইরে রাখতে হবে, এবং তারপরে আপনাকে এখনও একটি ব্যবহারকারী নাম এবং পাসওয়ার্ড প্রেরণ করতে হবে। এসএসএল প্রয়োজনীয়।
টোকেনের সমাপ্তি
"হেই, যখন এই টোকেনটি প্রায় দীর্ঘ হয়ে গেছে, এটিকে বাতিল করুন এবং ব্যবহারকারীকে আবার প্রমাণীকরণ করুন" এর মতো টোকন নীতি প্রয়োগ করা সাধারণ। বা "আমি নিশ্চিত যে এই টোকেনটি ব্যবহারের জন্য অনুমোদিত একমাত্র আইপি ঠিকানাটি XXX.XXX.XXX.XXX
"। এর মধ্যে অনেকগুলি নীতিই বেশ ভাল ধারণা।
Firesheeping
তবে এসএসএল ব্যতীত একটি টোকেন ব্যবহার করা এখনও 'সাইডজ্যাকিং' নামক আক্রমণটির পক্ষে ঝুঁকিপূর্ণ: http://codebutler.github.io/firesheep/
আক্রমণকারী আপনার ব্যবহারকারীর শংসাপত্রগুলি পাবে না তবে তারা এখনও আপনার ব্যবহারকারী হওয়ার ভান করতে পারে, এটি বেশ খারাপ হতে পারে।
tl; dr: তারের উপরে এনক্রিপ্ট করা টোকেনগুলি প্রেরণের অর্থ হানাদাররা সহজেই সেই টোকেনগুলিকে ধরতে পারে এবং আপনার ব্যবহারকারী হিসাবে ভান করতে পারে। ফায়ারশিপ এমন একটি প্রোগ্রাম যা এটি খুব সহজ করে তোলে।
একটি পৃথক, আরও সুরক্ষিত অঞ্চল
আপনি যে অ্যাপ্লিকেশনটি চালাচ্ছেন তত বেশি শক্ত, এটি একেবারে নিশ্চিত করা যে তারা এমন কিছু কোড ইনজেক্ট করতে সক্ষম হবে না যা আপনার সংবেদনশীল ডেটার প্রক্রিয়াটি পরিবর্তন করে। আপনি কি আপনার সিডিএনকে পুরোপুরি বিশ্বাস করেন? আপনার বিজ্ঞাপনদাতারা? আপনার নিজস্ব কোড বেস?
ক্রেডিট কার্ডের বিশদগুলির জন্য সাধারণ এবং ব্যবহারকারীর নাম এবং পাসওয়ার্ডের জন্য কম সাধারণ - কিছু প্রয়োগকারীরা তাদের প্রয়োগের বাকী অংশ থেকে পৃথক পৃষ্ঠায় 'সংবেদনশীল ডেটা এন্ট্রি' রাখেন, এমন একটি পৃষ্ঠা যা দৃ controlled়ভাবে নিয়ন্ত্রণ করা যায় এবং যথাসম্ভব সর্বোত্তমভাবে লক করা যায়, সম্ভবত এটির একটি ব্যবহারকারীদের সাথে ফিশ করা কঠিন।
কুকি (কেবল অর্থ টোকেন)
কোনও কুকিতে প্রমাণীকরণ টোকেন রাখা সম্ভব (এবং সাধারণ)। এটি টোকেন সহ লেখকের কোনও বৈশিষ্ট্য পরিবর্তন করে না, এটি সুবিধামত জিনিস। পূর্ববর্তী সমস্ত যুক্তি এখনও প্রয়োগ হয়।
সেশন (এখনও ঠিক টোকেন অর্থ)
সেশন অথ হ'ল টোকেন প্রমাণীকরণ, তবে কয়েকটি পার্থক্যের সাথে এটি কিছুটা আলাদা জিনিস বলে মনে হচ্ছে:
- ব্যবহারকারীরা অননুমোদিত টোকেন দিয়ে শুরু করে।
- ব্যাকএন্ড একটি 'স্টেট' অবজেক্টটি বজায় রাখে যা ব্যবহারকারীর টোকেনের সাথে আবদ্ধ।
- টোকেন একটি কুকিতে সরবরাহ করা হয়।
- অ্যাপ্লিকেশন পরিবেশটি আপনার থেকে বিশদ বিবরণ বিমূর্ত করে।
এটি বাদ দিয়ে, যদিও এটি টোকেন আথের থেকে আলাদা নয়, সত্যই।
এটি একটি বিশিষ্ট বাস্তবায়ন থেকে আরও ঘুরে বেড়ায় - রাষ্ট্রীয় বস্তুগুলির সাথে আপনি আরও সরু রাজ্যের সার্ভারে আরপিকের সরল পথে আরও এগিয়ে যাচ্ছেন।
OAuth 2.0
ওআউথ ২.০ "" সফটওয়্যার এ কীভাবে সফটওয়্যার বি ব্যবহারকারীর এক্স এর লগইন শংসাপত্রগুলিতে অ্যাক্সেস না থাকা সফটওয়্যার বি ছাড়াই ব্যবহারকারী এক্স এর ডেটাতে সফটওয়্যার বি অ্যাক্সেস দেয় "এর সমস্যাটি দেখায়।
ব্যবহারকারীর টোকেন পাওয়ার জন্য বাস্তবায়নটি কেবলমাত্র একটি স্ট্যান্ডার্ড উপায় এবং তারপরে "হ্যাঁ, এই ব্যবহারকারী এবং এই টোকেনের মিল রয়েছে এবং আপনি এখনই আমাদের কাছ থেকে তাদের কিছু ডেটা পেতে পারেন" ep
মূলত, যদিও, OAuth 2.0 শুধুমাত্র একটি টোকেন প্রোটোকল। এটি অন্যান্য টোকেন প্রোটোকলের মতো একই বৈশিষ্ট্য প্রদর্শন করে - সেই টোকেনগুলি সুরক্ষিত করার জন্য আপনার এখনও এসএসএল দরকার - এই টোকেনগুলি কীভাবে উত্পন্ন হয় তা ঠিক পরিবর্তিত হয়।
দুটি উপায় রয়েছে যা OAuth 2.0 আপনাকে সহায়তা করতে পারে:
- অন্যকে প্রমাণীকরণ / তথ্য সরবরাহ করা
- অন্যের কাছ থেকে প্রমাণীকরণ / তথ্য প্রাপ্তি
তবে এটি যখন নেমে আসে, আপনি কেবল ... টোকেন ব্যবহার করছেন।
আপনার প্রশ্ন ফিরে
সুতরাং, আপনি যে প্রশ্নটি জিজ্ঞাসা করছেন তা হ'ল "আমি কি আমার টোকেনটি একটি কুকিতে সংরক্ষণ করি এবং আমার পরিবেশের স্বয়ংক্রিয় সেশন ম্যানেজমেন্টের বিশদটি যত্ন নিতে পারি, না আমার জাভাস্ক্রিপ্টে আমার টোকেন সংরক্ষণ করা উচিত এবং সেই বিবরণগুলি নিজেই পরিচালনা করা উচিত?"
এবং উত্তরটি হ'ল: আপনাকে যা খুশি করে তাই করুন ।
স্বয়ংক্রিয় অধিবেশন পরিচালনার বিষয়টি হ'ল আপনার পর্দার আড়ালে প্রচুর যাদু ঘটছে। এই বিবরণগুলি নিজেরাই নিয়ন্ত্রণ করা প্রায়শই ভাল।
আমি 21 বছরের তাই এসএসএল হ্যাঁ
অন্য উত্তরটি হ'ল: https ব্যবহার করুন বা ব্রিগেডগুলি আপনার ব্যবহারকারীর পাসওয়ার্ড এবং টোকেন চুরি করবে।