প্রথম অংশ: লগ ইন কীভাবে করবেন
আমরা ধরে নেব যে আপনি কীভাবে একটি লগইন + পাসওয়ার্ড এইচটিএমএল ফর্ম তৈরি করবেন তা যা প্রমাণীকরণের জন্য সার্ভারের পাশের কোনও স্ক্রিপ্টে মানগুলি পোস্ট করে। নীচের বিভাগগুলি কার্যকর ব্যবহারিক লেখার জন্য নিদর্শনগুলি এবং সবচেয়ে সাধারণ সুরক্ষার সমস্যাগুলি কীভাবে এড়াতে হবে তা নিয়ে কাজ করবে।
এইচটিটিপিএসে না এইচটিটিপিএসে?
সংযোগটি ইতিমধ্যে সুরক্ষিত না হলে (এটি SSL / TLS ব্যবহার করে এইচটিটিপিএসের মাধ্যমে টানেল করা) আপনার লগইন ফর্মের মানগুলি ক্লিয়ারটেক্সটে প্রেরণ করা হবে, যা ব্রাউজার এবং ওয়েব সার্ভারের মধ্যবর্তী লাইনে শ্রুতিমধুর করার অনুমতি দেওয়ার সাথে সাথে লগইনগুলি পড়তে সক্ষম হবে মাধ্যম. এই ধরণের ওয়্যারটাইপিং সরকার কর্তৃক নিয়মিত করা হয়, তবে সাধারণভাবে আমরা 'মালিকানাধীন' তারগুলি এটি না বলে সম্বোধন করব না: কেবল এইচটিটিপিএস ব্যবহার করুন।
সংক্ষেপে, লগইন চলাকালীন ওয়্যারট্যাপিং / প্যাকেট স্নিফিংয়ের বিরুদ্ধে সুরক্ষার একমাত্র ব্যবহারিক উপায় হ'ল এইচটিটিপিএস বা অন্য শংসাপত্র ভিত্তিক এনক্রিপশন স্কিম (উদাহরণস্বরূপ, টিএলএস ) বা একটি প্রমাণিত ও পরীক্ষিত চ্যালেঞ্জ-প্রতিক্রিয়া প্রকল্প (উদাহরণস্বরূপ, ডিফি-হেলম্যান -ভিত্তিক এসআরপি)। অন্য কোনও পদ্ধতি সহজেই একটি ছদ্মবেশী আক্রমণকারী দ্বারা পরিবেষ্টিত করা যেতে পারে ।
অবশ্যই আপনি যদি কিছুটা অবৈজ্ঞানিক পেতে ইচ্ছুক হন তবে আপনি দ্বি-ফ্যাক্টর প্রমাণীকরণের স্কিমের কিছু ফর্ম (যেমন গুগল প্রমাণীকরণকারী অ্যাপ্লিকেশন, একটি শারীরিক 'কোল্ড ওয়ার স্টাইল' কোডবুক, অথবা একটি আরএসএ কী জেনারেটর ডংল) নিয়োগ করতে পারেন। যদি সঠিকভাবে প্রয়োগ করা হয় তবে এটি কোনও অনিরাপদ সংযোগ নিয়েও কাজ করতে পারে, তবে এটি কল্পনা করা শক্ত যে কোনও দেব এসএসএল নয় বরং দ্বি-ফ্যাক্টর লেখার প্রয়োগ করতে রাজি হবেন।
(করবেন না) আপনার নিজের জাভাস্ক্রিপ্ট এনক্রিপশন / হ্যাশিং রোল করুন
আপনার ওয়েবসাইটটিতে একটি এসএসএল শংসাপত্র স্থাপনের জন্য ব্যয় (যদিও এখন এড়াতে সক্ষম ) ব্যয় এবং প্রযুক্তিগত অসুবিধা দেওয়া হয়েছে, কিছু বিকাশকারী কোনও সুরক্ষিত তারের উপর দিয়ে ক্লিয়ারটেক্সট লগইনগুলি এড়াতে তাদের নিজস্ব ব্রাউজার হ্যাশিং বা এনক্রিপশন স্কিমগুলি রোল করার জন্য প্রলুব্ধ হয়।
যদিও এটি একটি মহৎ চিন্তা, যদিও এটি উপরের কোনওটির সাথে একত্রিত না করা হয় এটি মূলত অকেজো (এবং সুরক্ষা ত্রুটি হতে পারে ) - এটি হয় শক্তিশালী এনক্রিপশন সহ লাইনটি সুরক্ষিত করা বা চেষ্টা-পরীক্ষিত চ্যালেঞ্জ-প্রতিক্রিয়া ব্যবহার করে প্রক্রিয়া (যদি আপনি এটি কী না জানেন তবে কেবল এটি জেনে রাখুন যে এটি প্রমাণ করা সবচেয়ে কঠিন, নকশা করা সবচেয়ে কঠিন এবং ডিজিটাল সুরক্ষায় ধারণাগুলি কার্যকর করা সবচেয়ে কঠিন)।
যদিও এটি সত্য যে পাসওয়ার্ডটি হ্যাশ করা পাসওয়ার্ড প্রকাশের বিরুদ্ধে কার্যকর হতে পারে তবে আক্রমণটি পুনরায় চালানো ঝুঁকিপূর্ণ, ম্যান-ইন-দ্য-মিডিল আক্রমণ / হাইজ্যাকিংস (যদি কোনও আক্রমণকারী আপনার অরক্ষিত এইচটিএমএল পৃষ্ঠায় পৌঁছানোর আগে কয়েক বাইট ইনজেকশন করতে পারে) ব্রাউজার, তারা কেবল জাভাস্ক্রিপ্টে হ্যাশিং সম্পর্কে মন্তব্য করতে পারে), বা জন্তু-আক্রমণ আক্রমণ (যেহেতু আপনি আক্রমণকারীর নাম, লবণ এবং হ্যাশ পাসওয়ার্ড উভয়ই হস্তান্তর করছেন)।
ক্যাপচাস মানবতার বিরুদ্ধে
ক্যাপচা বলতে আক্রমণের একটি নির্দিষ্ট বিভাগকে ব্যর্থ করে বোঝানো হয়: স্বয়ংক্রিয় ডিকশনারি / ব্রেট জোর করে বিচার-ও-ত্রুটি কোনও মানবিক অপারেটরকে না দিয়ে। সন্দেহ নেই যে এটি একটি আসল হুমকি, তবে, এটি নির্বিঘ্নে মোকাবেলা করার বিভিন্ন উপায় রয়েছে যা একটি ক্যাপচা প্রয়োজন হয় না, বিশেষভাবে সঠিকভাবে ডিজাইন করা সার্ভার-সাইড লগইন থ্রোটলিং স্কিমগুলি - আমরা পরে সেগুলি নিয়ে আলোচনা করব।
জেনে রাখুন ক্যাপচা বাস্তবায়নগুলি একইভাবে তৈরি হয় না; তারা প্রায়শই মানব-দ্রবণযোগ্য হয় না, তাদের বেশিরভাগই বটের বিরুদ্ধে আসলেই অকার্যকর, তারা সকলেই সস্তা তৃতীয় বিশ্বের শ্রমের বিরুদ্ধে অকার্যকর ( ওডাব্লুএএসপি অনুসারে , বর্তমান সোয়েটশপের হার প্রতি 500 পরীক্ষায় 12 ডলার), এবং কিছু বাস্তবায়ন হতে পারে কিছু দেশে প্রযুক্তিগতভাবে অবৈধ ( ওডাব্লুএএসপি প্রমাণীকরণের চিট শিট দেখুন )। যদি আপনাকে অবশ্যই ক্যাপচা ব্যবহার করতে হয় তবে গুগলের রেক্যাপচা ব্যবহার করুন , যেহেতু এটি সংজ্ঞা অনুসারে ওসিআর-হার্ড (যেহেতু এটি ইতিমধ্যে ওসিআর-বিভ্রান্তিত বইয়ের স্ক্যান ব্যবহার করে) এবং ব্যবহারকারী-বান্ধব হওয়ার জন্য খুব চেষ্টা করে।
ব্যক্তিগতভাবে, আমি ক্যাপচাসকে বিরক্তিকর খুঁজে বের করার প্রবণতা অর্জন করি এবং যখন কোনও ব্যবহারকারী বহুবার লগ ইন করতে ব্যর্থ হয় এবং থ্রোটলিং বিলম্ব সীমাবদ্ধ হয় তখন কেবল সেগুলি কেবলমাত্র শেষ অবলম্বন হিসাবে ব্যবহার করি। এটি গ্রহণযোগ্য হওয়ার জন্য খুব কমই ঘটবে এবং এটি সামগ্রিকভাবে সিস্টেমকে শক্তিশালী করে।
পাসওয়ার্ড সংরক্ষণ / লগইন যাচাই করা
সাম্প্রতিক বছরগুলিতে আমরা যে সমস্ত উচ্চ-প্রচারিত হ্যাকগুলি এবং ব্যবহারকারীর ডেটা ফাঁস দেখেছি তা অবশেষে এটি সাধারণ জ্ঞান হতে পারে তবে এটি বলতে হবে: আপনার ডাটাবেসে পাসওয়ার্ডগুলি ক্লিয়ারটেক্সটে সংরক্ষণ করবেন না। ব্যবহারকারীর ডাটাবেসগুলি নিয়মিতভাবে হ্যাক, ফাঁস বা এসকিউএল ইনজেকশনের মাধ্যমে সংগ্রহ করা হয় এবং আপনি যদি কাঁচা, প্লেইন টেক্সট পাসওয়ার্ড সংরক্ষণ করেন তবে এটি আপনার লগইন সুরক্ষার জন্য তাত্ক্ষণিক খেলা।
সুতরাং আপনি যদি পাসওয়ার্ডটি সংরক্ষণ করতে না পারেন তবে লগইন ফর্ম থেকে পোষ্ট করা লগইন + পাসওয়ার্ডের সংমিশ্রণটি সঠিক কিনা তা আপনি কীভাবে পরীক্ষা করবেন? উত্তরটি একটি কী ডেরাইভেশন ফাংশন ব্যবহার করে হ্যাশ করছে । যখনই কোনও নতুন ব্যবহারকারী তৈরি করা হয় বা একটি পাসওয়ার্ড পরিবর্তন করা হয়, আপনি পাসওয়ার্ডটি গ্রহণ করে আরডিগন 2, বিক্রিপট, স্ক্রিপ্ট বা পিবিকেডিএফ 2 এর মতো কোনও কেডিএফ দিয়ে চালান, ক্লিয়ারটেক্সট পাসওয়ার্ডকে ("সংশোধনকারীসামগ্রী") একটি দীর্ঘ, এলোমেলো চেহারার স্ট্রিংয়ে পরিণত করে , যা আপনার ডাটাবেসে সংরক্ষণ করতে অনেক বেশি নিরাপদ। একটি লগইন যাচাই করতে, আপনি প্রবেশ করা পাসওয়ার্ডে একই হ্যাশ ফাংশনটি চালান, এবার নুনের মধ্যে দিয়ে যাচ্ছেন এবং ফলস্বরূপ হ্যাশ স্ট্রিংটিকে আপনার ডাটাবেসে সঞ্চিত মানের সাথে তুলনা করুন। আর্গন 2, বিক্রিপ্ট এবং স্ক্রিপ্ট ইতিমধ্যে হ্যাশ দিয়ে লবণ সঞ্চয় করে। আরও বিস্তারিত তথ্যের জন্য এই নিবন্ধটি সেক। স্ট্যাকেক্সেঞ্জারে দেখুন।
লবণ ব্যবহার করার কারণটি হ'ল নিজেই হ্যাশিং যথেষ্ট নয় - আপনি রেইনবো টেবিলের বিরুদ্ধে হ্যাশ রক্ষার জন্য একটি তথাকথিত 'লবণ' যুক্ত করতে চান । একটি লবণ কার্যকরভাবে দুটি পাসওয়ার্ডকে প্রতিরোধ করে যা একই হ্যাশ মান হিসাবে সংরক্ষণ করা থেকে ঠিক মেলে, যদি কোনও আক্রমণকারী পাসওয়ার্ড অনুমানের আক্রমণ চালিয়ে থাকে তবে পুরো ডাটাবেসটিকে এক রানেই স্ক্যান করা আটকাবে।
পাসওয়ার্ড স্টোরেজের জন্য একটি ক্রিপ্টোগ্রাফিক হ্যাশ ব্যবহার করা উচিত নয় কারণ ব্যবহারকারী-নির্বাচিত পাসওয়ার্ডগুলি যথেষ্ট শক্তিশালী নয় (যেমন সাধারণত পর্যাপ্ত এনট্রপি থাকে না) এবং একটি পাসওয়ার্ড অনুমানের আক্রমণটি হ্যাশগুলিতে অ্যাক্সেস সহ কোনও আক্রমণকারী দ্বারা তুলনামূলকভাবে স্বল্প সময়ে সম্পন্ন করতে পারে। এই কারণেই কেডিএফ ব্যবহার করা হয় - এগুলি কার্যকরভাবে "কী প্রসারিত করুন" যার অর্থ যে প্রতিটি পাসওয়ার্ড অনুমান করে যে আক্রমণকারী একটি হ্যাশ অ্যালগরিদমের একাধিক পুনরাবৃত্তি ঘটায়, উদাহরণস্বরূপ 10,000 বার, যার ফলে আক্রমণকারীটি পাসওয়ার্ডটি 10,000 বার আস্তে আস্তে অনুমান করে।
সেশন ডেটা - "আপনি স্পাইডারম্যান 69 হিসাবে লগ ইন করেছেন"
একবার সার্ভার আপনার ব্যবহারকারী ডাটাবেসের বিরুদ্ধে লগইন এবং পাসওয়ার্ড যাচাই করে এবং একটি মিল খুঁজে পেয়েছে, ব্রাউজারটি প্রমাণীকরণ হয়েছে কিনা তা মনে করার জন্য সিস্টেমের একটি উপায় প্রয়োজন। এই সত্যটি কেবলমাত্র সেশন ডেটাতে সার্ভারের সাইডে সংরক্ষণ করা উচিত।
আপনি যদি সেশন ডেটার সাথে অপরিচিত থাকেন তবে এটি কীভাবে কাজ করে তা এখানে: একক এলোমেলোভাবে উত্পন্ন স্ট্রিং একটি মেয়াদোত্তীর্ণ কুকিতে সংরক্ষণ করা হয় এবং ডেটা সংকলন - সেশন ডেটা - যা সার্ভারে সঞ্চিত থাকে তা উল্লেখ করতে ব্যবহৃত হয় used আপনি যদি কোনও এমভিসি ফ্রেমওয়ার্ক ব্যবহার করেন তবে নিঃসন্দেহে এটি ইতিমধ্যে পরিচালনা করা হয়েছে।
যদি কিছুটা সম্ভব হয় তবে নিশ্চিত হয়ে নিন যে সেশন কুকিতে ব্রাউজারে প্রেরণের সময় সুরক্ষিত এবং কেবল এইচটিটিপি ফ্ল্যাগ সেট রয়েছে। এইচটিপিঅনলি পতাকাটি এক্সএসএস আক্রমণ দ্বারা কুকি পড়ার বিরুদ্ধে কিছু সুরক্ষা সরবরাহ করে। সুরক্ষিত পতাকাটি নিশ্চিত করে যে কুকি কেবল এইচটিটিপিএসের মাধ্যমে ফেরত পাঠানো হয়েছে, এবং তাই নেটওয়ার্ক স্নিফিং আক্রমণ থেকে রক্ষা করে। কুকির মান অনুমানযোগ্য হওয়া উচিত নয়। একটি কুকি যেখানে অস্তিত্বহীন অধিবেশন উল্লেখ করা হয় সেখানে সেশন ফিক্সেশন প্রতিরোধের জন্য তার মানটি অবিলম্বে প্রতিস্থাপন করা উচিত ।
দ্বিতীয় খণ্ড: কীভাবে লগ ইন থাকবেন - কুখ্যাত "আমাকে মনে রাখুন" চেকবাক্স
অবিচ্ছিন্ন লগইন কুকিজ ("আমাকে স্মরণ করুন" কার্যকারিতা) একটি বিপদ অঞ্চল; ব্যবহারকারীরা কীভাবে তাদের পরিচালনা করতে পারবেন তা একদিকে যেমন তারা প্রচলিত লগইনগুলির মতো সম্পূর্ণ নিরাপদ; এবং অন্যদিকে, এগুলি অসাবধান ব্যবহারকারীদের হাতে বিপুল সুরক্ষিত ঝুঁকি, যারা এগুলি পাবলিক কম্পিউটারে ব্যবহার করতে পারে এবং লগ আউট করতে ভুলে যেতে পারে এবং ব্রাউজার কুকিজ কী কী তা কীভাবে তা মুছতে পারে বা যারা জানেন না।
ব্যক্তিগতভাবে, আমি নিয়মিত যে ওয়েবসাইটগুলিতে ভিজিট করি তার জন্য অবিচ্ছিন্ন লগইনগুলি পছন্দ করি তবে কীভাবে সেগুলি নিরাপদে পরিচালনা করতে হয় তা আমি জানি। আপনি যদি ইতিবাচক হন যে আপনার ব্যবহারকারীরাও এটি জানেন তবে আপনি পরিষ্কার বিবেকের সাহায্যে অবিচ্ছিন্ন লগইনগুলি ব্যবহার করতে পারেন। যদি তা না হয় - তবে ভাল, তবে আপনি যে দর্শনে তাদের লগইন শংসাপত্রগুলি নিয়ে অসতর্ক হন তারা হ্যাক হয়ে গেলে তাদের উপরে এনে দিয়েছিলেন philosophy এটি এমন নয় যে আমরা আমাদের ব্যবহারকারীর বাড়িতে যাই এবং সেই সমস্ত ফেসপাল-প্ররোচিত পোস্ট-এটি নোটগুলি তাদের মনিটরের প্রান্তে রেখাযুক্ত পাসওয়ার্ড সহ নোট করি।
অবশ্যই, কিছু সিস্টেমে কোনও অ্যাকাউন্ট হ্যাক করার সামর্থ নেই ; এই ধরনের সিস্টেমের জন্য, অবিচ্ছিন্ন লগইন থাকার পক্ষে আপনি ন্যায়সঙ্গত করার কোনও উপায় নেই।
আপনি যদি অবিচ্ছিন্ন লগইন কুকিজ বাস্তবায়নের সিদ্ধান্ত নেন না, আপনি এটি এটিই করেন:
প্রথমে বিষয়টিতে প্যারাগন ইনিশিয়েটিভের নিবন্ধটি পড়ার জন্য কিছুটা সময় নিন । আপনার সঠিক উপাদানগুলির একটি গুচ্ছ পেতে হবে এবং নিবন্ধটি প্রতিটি ব্যাখ্যা করার দুর্দান্ত কাজ করে।
এবং কেবলমাত্র একটি সাধারণ সমস্যাগুলির পুনরাবৃত্তি করতে , কেবলমাত্র এক হ্যাশ আইটেমি, আপনার ডেটাবাসে ব্যক্তিগত লগিন কুকি (টোকেন) সঞ্চয় করবেন না! লগইন টোকেন হ'ল পাসওয়ার্ড সমতুল্য, সুতরাং যদি কোনও আক্রমণকারী আপনার ডাটাবেসে হাত পেয়ে থাকে তবে তারা টোকেনগুলি যে কোনও অ্যাকাউন্টে লগ ইন করতে পারে, ঠিক যেমন তারা ক্লিয়ারটেক্সট লগইন-পাসওয়ার্ড সংমিশ্রণ। অতএব, অবিচ্ছিন্ন লগইন টোকেনগুলি সংরক্ষণ করার সময় হ্যাশিং ব্যবহার করুন ( https://security.stackexchange.com/a/63438/5002 অনুসারে একটি দুর্বল হ্যাশ এই উদ্দেশ্যে ঠিক করবে)।
পার্ট তৃতীয়: গোপন প্রশ্নাবলী ব্যবহার করা
'গোপন প্রশ্ন' বাস্তবায়ন করবেন না । 'গোপন প্রশ্ন' বৈশিষ্ট্যটি একটি সুরক্ষা বিরোধী নিদর্শন। মুস্ট-রিড তালিকা থেকে 4 নম্বর লিঙ্কের কাগজটি পড়ুন। আপনি তার সম্পর্কে ইয়াহু! এর পরে সারা পলিনকে জিজ্ঞাসা করতে পারেন! পূর্ববর্তী রাষ্ট্রপতি প্রচারের সময় ইমেল অ্যাকাউন্ট হ্যাক হয়ে যায় কারণ তার সুরক্ষা প্রশ্নের উত্তর ছিল ... "ওয়াসিলা হাই স্কুল"!
এমনকি ব্যবহারকারী-নির্দিষ্ট প্রশ্নাবলীর সাথেও, সম্ভবত বেশিরভাগ ব্যবহারকারীরা যে কোনও একটি বেছে নেবেন: সম্ভবতঃ
মায়ের প্রথম নাম বা প্রিয় পোষা প্রাণীর মতো একটি 'স্ট্যান্ডার্ড' গোপন প্রশ্ন
ট্রিভিয়ার একটি সাধারণ টুকরো যা যে কেউ তাদের ব্লগ, লিংকডইন প্রোফাইল বা অনুরূপ থেকে তুলতে পারে
তাদের পাসওয়ার্ড অনুমান করার চেয়ে উত্তর দেওয়া সহজ যে কোনও প্রশ্নের। কোন, কোনও শালীন পাসওয়ার্ডের জন্য, আপনি কল্পনা করতে পারেন এমন প্রতিটি প্রশ্ন
উপসংহারে, সুরক্ষা প্রশ্নগুলি প্রকৃতপক্ষে তাদের সমস্ত ফর্ম এবং প্রকরণগুলিতে সহজাত নিরাপত্তাহীন এবং কোনও কারণে কোনও প্রমাণীকরণ স্কিমে নিযুক্ত করা উচিত নয়।
এমনকি সুরক্ষিত প্রশ্নগুলি বন্যের মধ্যে উপস্থিত থাকার আসল কারণ হ'ল তারা পুনরায় সক্রিয়করণের কোডটিতে যেতে তাদের ইমেলগুলিতে অ্যাক্সেস করতে পারে না এমন ব্যবহারকারীদের কাছ থেকে কয়েকটি সমর্থন কলগুলির সুবিধার্থে সঞ্চয় করে। এটি সুরক্ষার ব্যয় এবং সারা পলিনের খ্যাতি। মূল্য? সম্ভবত না.
পার্ট IV: ভুলে যাওয়া পাসওয়ার্ড কার্যকারিতা
ভুলে যাওয়া / হারিয়ে যাওয়া ব্যবহারকারীর পাসওয়ার্ডগুলি পরিচালনা করার জন্য আপনাকে কখনই সুরক্ষা প্রশ্ন ব্যবহার করা উচিত নয় তা আমি ইতিমধ্যে উল্লেখ করেছি ; এটি কখনও না বলেও যায় যে আপনার ব্যবহারকারীদের আসল পাসওয়ার্ডগুলি কখনই ইমেল করা উচিত নয়। এই ক্ষেত্রে এড়াতে কমপক্ষে আরও দু'টি অতি-প্রচলিত সমস্যা রয়েছে:
কোনও ভুলে যাওয়া পাসওয়ার্ডটিকে একটি স্বয়ংক্রিয় জেনারেটেড শক্তিশালী পাসওয়ার্ডে পুনরায় সেট করবেন না - এই জাতীয় পাসওয়ার্ডগুলি স্মরণ করা কুখ্যাতভাবে শক্ত, যার অর্থ ব্যবহারকারীকে অবশ্যই এটি পরিবর্তন করতে হবে বা লিখতে হবে - বলুন, তাদের মনিটরের প্রান্তে একটি উজ্জ্বল হলুদ পোস্টে বলুন। নতুন পাসওয়ার্ড সেট করার পরিবর্তে, কেবলমাত্র ব্যবহারকারীদের এখনই একটি নতুন চয়ন করতে দিন - যা তারা যাই হোক না কেন করতে চান। (এর ব্যতিক্রম হতে পারে যদি ব্যবহারকারীরা সর্বজনীনভাবে পাসওয়ার্ডগুলি সংরক্ষণ / পরিচালনা করতে পাসওয়ার্ড ম্যানেজার ব্যবহার করে থাকেন যা সাধারণত এটি লিখে না রেখে মনে রাখা অসম্ভব)।
সর্বদা ডাটাবেসে হারিয়ে যাওয়া পাসওয়ার্ড কোড / টোকেন হ্যাশ করুন। তবুও , এই কোডটি একটি পাসওয়ার্ড ইকুইভ্যালেন্টের অন্য একটি উদাহরণ, সুতরাং কোনও আক্রমণকারী যদি আপনার ডাটাবেসে হাত পেতে থাকে তবে এটি অবশ্যই ধুয়ে ফেলতে হবে। যখন কোনও হারিয়ে যাওয়া পাসওয়ার্ড কোডটি অনুরোধ করা হয়, তখন ব্যবহারকারীর ইমেল ঠিকানায় প্লেটেক্সট কোডটি প্রেরণ করুন, তারপরে এটি হ্যাশ করুন, আপনার ডাটাবেজে হ্যাশ সংরক্ষণ করুন - এবং মূলটি ফেলে দিন । ঠিক যেমন একটি পাসওয়ার্ড বা অবিচ্ছিন্ন লগইন টোকেন।
একটি চূড়ান্ত নোট: সর্বদা নিশ্চিত হয়ে নিন যে 'হারিয়ে যাওয়া পাসওয়ার্ড কোড' প্রবেশের জন্য আপনার ইন্টারফেসটি আপনার লগইন ফর্মের মতোই কমপক্ষে সুরক্ষিত, অথবা আক্রমণকারী কেবল এর পরিবর্তে অ্যাক্সেস পাওয়ার জন্য এটি ব্যবহার করবে। আপনি খুব দীর্ঘ 'হারানো পাসওয়ার্ড কোড' তৈরি করেছেন তা নিশ্চিত করা (উদাহরণস্বরূপ, 16 কেস-সংবেদনশীল আলফানিউমেরিক অক্ষর) খুব ভাল শুরু, তবে আপনি লগইন ফর্মের জন্য একই থ্রোলেটলিং স্কিম যুক্ত করার বিষয়টি বিবেচনা করুন।
পার্ট ভি: পাসওয়ার্ডের শক্তি পরীক্ষা করা
প্রথমত, আপনি এই ছোট্ট নিবন্ধটি বাস্তবতা যাচাইয়ের জন্য পড়তে চাইবেন: 500 টি সাধারণ পাসওয়ার্ড
ঠিক আছে, তাই হয়তো তালিকা নয় ক্যানোনিকাল সবচেয়ে প্রচলিত পাসওয়ার্ডের তালিকা কোনো সিস্টেম যে কোন জায়গায় কি কখনো , কিন্তু এটা কিভাবে দুর্বল মানুষ তাদের পাসওয়ার্ড বেছে নেবেন যখন জায়গায় কোন জারি নীতি একটি ভাল লক্ষণ নয়। এছাড়াও, আপনি সম্প্রতি চুরি হওয়া পাসওয়ার্ডগুলির সর্বজনীন উপলভ্য বিশ্লেষণের সাথে তালিকার তুলনায় তালিকাটি ভীতিজনকভাবে ঘরের কাছাকাছি দেখায়।
সুতরাং: কোনও ন্যূনতম পাসওয়ার্ড শক্তির প্রয়োজনীয়তা ছাড়াই, 2% ব্যবহারকারী শীর্ষ 20 সর্বাধিক সাধারণ পাসওয়ার্ডগুলির মধ্যে একটি ব্যবহার করেন। অর্থ: যদি কোনও আক্রমণকারী মাত্র 20 টি প্রচেষ্টা পায়, আপনার ওয়েবসাইটের 50 টির মধ্যে 1 টি অ্যাকাউন্ট ক্র্যাকযোগ্য হবে।
এটি শুরু করার জন্য একটি পাসওয়ার্ডের এনট্রপি গণনা করা এবং তারপরে একটি থ্রেশহোল্ড প্রয়োগ করা দরকার। ন্যাশনাল ইনস্টিটিউট অফ স্ট্যান্ডার্ডস অ্যান্ড টেকনোলজির (এনআইএসটি) বিশেষ প্রকাশনা 800-63 তে খুব ভাল পরামর্শের একটি সেট রয়েছে। এটি, যখন অভিধান এবং কীবোর্ড লেআউট বিশ্লেষণের সাথে মিলিত হয় (উদাহরণস্বরূপ, 'কিওয়ার্টিইওপ' একটি খারাপ পাসওয়ার্ড), এন্ট্রপির 18 বিটের একটি স্তরে 99% খারাপভাবে নির্বাচিত পাসওয়ার্ড প্রত্যাখ্যান করতে পারে । কেবল পাসওয়ার্ডের শক্তি গণনা করা এবং কোনও ব্যবহারকারীকে একটি ভিজ্যুয়াল শক্তি মিটার দেখানো ভাল, তবে অপর্যাপ্ত। এটি প্রয়োগ না করা হলে, প্রচুর ব্যবহারকারী সম্ভবত এটি উপেক্ষা করবেন।
এবং উচ্চ-এনট্রপি পাসওয়ার্ডগুলির ব্যবহারকারী-বন্ধুত্বকে সতেজকরণের জন্য , র্যান্ডাল মুনরোর পাসওয়ার্ড শক্তি xkcd সুপারিশ করা হয়।
জনসাধারণের ডেটা লঙ্ঘনের ক্ষেত্রে আপোষযুক্ত পাসওয়ার্ডগুলির বিরুদ্ধে ব্যবহারকারীদের পাসওয়ার্ডগুলি পরীক্ষা করতে ট্রয় হান্টের হ্যাভ আই হ্যা পিডড এপিআই ব্যবহার করুন ।
পার্ট ষষ্ঠ: আরও অনেক কিছু - বা: দ্রুত-ফায়ার লগইন প্রচেষ্টা রোধ করা হচ্ছে
প্রথমে সংখ্যাগুলি একবার দেখুন: পাসওয়ার্ড পুনরুদ্ধারের গতি - আপনার পাসওয়ার্ড আর কতক্ষণ দাঁড়াবে
আপনার যদি সেই লিঙ্কের সারণীগুলি সন্ধান করার সময় না থাকে তবে এখানে তাদের তালিকা রয়েছে:
দুর্বল পাসওয়ার্ডটি ক্র্যাক করতে কার্যত কোনও সময় লাগে না , এমনকি যদি আপনি এটি একটি অ্যাবাকাস দিয়ে ক্র্যাক করে থাকেন
বর্ণানুক্রমিক 9-অক্ষরের পাসওয়ার্ডটি যদি সংবেদনশীল না হয় তবে ক্র্যাক করতে কার্যত কোনও সময় লাগে না
একটি জটিল, চিহ্ন-এবং-অক্ষর-এবং-সংখ্যাগুলি, উচ্চ-এবং-ছোট হাতের পাসওয়ার্ডটি 8 টি অক্ষরের চেয়ে কম দীর্ঘ হলে ক্র্যাক করতে কার্যত কোনও সময় লাগে না (কোনও ডেস্কটপ পিসি কোনও বিষয়ে পুরো অক্ষরটি 7 অক্ষর পর্যন্ত অনুসন্ধান করতে পারে দিন বা এমনকি ঘন্টা)
তবে, আপনি যদি প্রতি সেকেন্ডে একটি প্রচেষ্টা সীমাবদ্ধ থাকতেন তবে 6-অক্ষরের পাসওয়ার্ডটিও ক্র্যাক করতে অসাধারণ সময় লাগবে !
তাহলে আমরা এই সংখ্যাগুলি থেকে কী শিখতে পারি? ওয়েল, প্রচুর, তবে আমরা সবচেয়ে গুরুত্বপূর্ণ অংশটির দিকে মনোনিবেশ করতে পারি: সত্য যে প্রচুর পরিমাণে দ্রুত আগুন লাগা লাগানো লগইন প্রচেষ্টা (অর্থাত্ ব্রুট ফোর্স আক্রমণ) প্রতিরোধ করা সত্যিই এতটা কঠিন নয়। তবে এটি সঠিকভাবে প্রতিরোধ করা যতটা সহজ মনে হচ্ছে তত সহজ নয়।
সাধারণভাবে বলতে গেলে, আপনার কাছে তিনটি পছন্দ রয়েছে যা ব্রুট-ফোর্স আক্রমণগুলির বিরুদ্ধে সমস্ত কার্যকর (এবং অভিধান আক্রমণগুলি, তবে যেহেতু আপনি ইতিমধ্যে একটি শক্তিশালী পাসওয়ার্ড নীতি নিযুক্ত করছেন, সেগুলি কোনও সমস্যা হওয়া উচিত নয়) :
এন ব্যর্থ চেষ্টার পরে একটি ক্যাপচা উপস্থাপন করুন (জাহান্নাম হিসাবে বিরক্তিকর এবং প্রায়শই অকার্যকর - তবে আমি এখানে নিজেকে পুনরাবৃত্তি করছি)
অ্যাকাউন্টগুলি লক করা এবং এন ব্যর্থ চেষ্টার পরে ইমেল যাচাইকরণের প্রয়োজন (এটি হওয়ার জন্য অপেক্ষা করা কোনও ডস আক্রমণ)
এবং পরিশেষে, লগইন থ্রোটলিং : এটি হ'ল এন ব্যর্থ চেষ্টার পরে প্রচেষ্টাগুলির মধ্যে একটি সময় বিলম্ব নির্ধারণ করে (হ্যাঁ, ডস আক্রমণগুলি এখনও সম্ভব, তবে কমপক্ষে তারা সম্ভবত কম সম্ভাবনা রয়েছে এবং টানতে আরও জটিল)।
সেরা অনুশীলন # 1: ব্যর্থ চেষ্টার সংখ্যার সাথে বৃদ্ধি পাওয়া একটি স্বল্প সময়ের বিলম্ব যেমন:
- 1 ব্যর্থ প্রচেষ্টা = দেরি নেই
- 2 টি ব্যর্থ প্রচেষ্টা = 2 সেকেন্ড বিলম্ব
- 3 ব্যর্থ প্রচেষ্টা = 4 সেকেন্ড বিলম্ব
- 4 টি ব্যর্থ প্রচেষ্টা = 8 সেকেন্ড বিলম্ব
- 5 ব্যর্থ প্রচেষ্টা = 16 সেকেন্ড বিলম্ব
- প্রভৃতি
ডস এই স্কিমকে আক্রমণ করা খুব অবৈজ্ঞানিক হবে, যেহেতু ফলস্বরূপ লকআউট সময়টি আগের লকআউটের সময়ের তুলনায় কিছুটা বড়।
স্পষ্ট করার জন্য: ব্রাউজারে প্রতিক্রিয়া ফিরিয়ে দেওয়ার আগে বিলম্ব হওয়া কোনও বিলম্ব নয় । এটি আরও সময়সীমা বা অবাধ্য সময়ের মতো যা সময়কালে কোনও নির্দিষ্ট অ্যাকাউন্টে বা নির্দিষ্ট আইপি ঠিকানা থেকে লগইন করার প্রচেষ্টা মোটেও গৃহীত বা মূল্যায়ন করা হবে না। এটি হ'ল সঠিক শংসাপত্রগুলি একটি সফল লগইনে ফিরে আসবে না এবং ভুল শংসাপত্রগুলি বিলম্ব বৃদ্ধির সূত্রপাত করবে না।
সেরা অনুশীলন # 2: একটি মাঝারি দৈর্ঘ্যের সময় বিলম্ব যা এন ব্যর্থ চেষ্টার পরে কার্যকর হয়, যেমন:
- 1-4 ব্যর্থ প্রচেষ্টা = কোনও বিলম্ব নেই
- 5 টি ব্যর্থ প্রচেষ্টা = 15-30 মিনিট বিলম্ব
এই প্রকল্পে ডস আক্রমণ করা বেশ কার্যকর হবে না, তবে অবশ্যই কার্যকর হবে do এছাড়াও, এটি লক্ষ করার জন্য প্রাসঙ্গিক হতে পারে যে এতো দীর্ঘ বিলম্ব বৈধ ব্যবহারকারীর জন্য খুব বিরক্তিকর হতে পারে। ভুলে যাওয়া ব্যবহারকারীরা আপনাকে অপছন্দ করবেন।
সেরা অনুশীলন # 3: দুটি পদ্ধতির সংমিশ্রণ - হয় একটি স্থির, স্বল্প সময়ের বিলম্ব যা এন ব্যর্থ চেষ্টার পরে কার্যকর হয়, যেমন:
- 1-4 ব্যর্থ প্রচেষ্টা = কোনও বিলম্ব নেই
- 5+ ব্যর্থ প্রচেষ্টা = 20 সেকেন্ড বিলম্ব
বা, একটি নির্দিষ্ট উপরের বাউন্ডের সাথে বাড়তি বিলম্ব, যেমন:
- 1 ব্যর্থ প্রচেষ্টা = 5 সেকেন্ড বিলম্ব
- 2 ব্যর্থ প্রচেষ্টা = 15 সেকেন্ড বিলম্ব
- 3+ চেষ্টা ব্যর্থ হয়েছে = 45 সেকেন্ড বিলম্ব
এই চূড়ান্ত স্কিমটি OWASP সেরা-অনুশীলনের পরামর্শগুলি থেকে নেওয়া হয়েছিল (মুস্ট-রিড তালিকার 1 লিঙ্ক) এবং এটি সীমাবদ্ধতার দিক থেকে স্বীকৃত থাকলেও সেরা অনুশীলন হিসাবে বিবেচনা করা উচিত।
তবে থাম্বের নিয়ম হিসাবে আমি বলব: আপনার পাসওয়ার্ডের নীতিটি ততই শক্তিশালী, আপনাকে বিলম্বের সাথে ব্যবহারকারীদের কম তত কম করতে হবে। আপনার যদি শক্তিশালী (কেস-সংবেদনশীল বর্ণমালা + প্রয়োজনীয় নম্বর এবং প্রতীক) 9+ টি অক্ষরের পাসওয়ার্ডের প্রয়োজন হয় তবে আপনি থ্রোটলিং সক্রিয় করার আগে ব্যবহারকারীদের 2-4 অ-বিলম্বিত পাসওয়ার্ড প্রচেষ্টা দিতে পারেন।
এই চূড়ান্ত লগইন থ্রোটলিং স্কিমকে আক্রমণ করে ডস খুব অবৈধ হবে। এবং একটি চূড়ান্ত স্পর্শ হিসাবে সর্বদা অবিচ্ছিন্ন (কুকি) লগইনগুলি (এবং / অথবা একটি ক্যাপচা-যাচাই করা লগইন ফর্ম) প্রবেশের অনুমতি দিন, সুতরাং আক্রমণটি অগ্রগতিতে থাকা অবস্থায় বৈধ ব্যবহারকারীরা এমনকি দেরি করবেন না । এইভাবে, খুব অবাস্তব ডওস আক্রমণ একটি চরম অবৈধ আক্রমণ হয়ে যায় ।
এগুলি, অ্যাডমিন অ্যাকাউন্টগুলিতে আরও আক্রমণাত্মক থ্রোললিং করা বোধগম্য হয় কারণ সেগুলি সবচেয়ে আকর্ষণীয় প্রবেশের পয়েন্ট
পার্ট সপ্তম: ব্রুট ফোর্স আক্রমণ বিতরণ
একদিকে যেমন আরও উন্নত আক্রমণকারীরা 'তাদের ক্রিয়াকলাপগুলি ছড়িয়ে' দিয়ে লগইন থ্রোললিংয়ের বিষয়টি রোধ করার চেষ্টা করবে:
আইপি ঠিকানা ফ্ল্যাগিং রোধ করতে বোটনেটে প্রচেষ্টা বিতরণ করা হচ্ছে
একটি ব্যবহারকারী বাছাই করা এবং 50.000 সর্বাধিক প্রচলিত পাসওয়ার্ড (যা তারা আমাদের থ্রোল্টোলিংয়ের কারণে তা করতে পারে না) চেষ্টা করার পরিবর্তে, তারা সর্বাধিক সাধারণ পাসওয়ার্ডটি বেছে নেবে এবং পরিবর্তে 50.000 ব্যবহারকারীর বিরুদ্ধে চেষ্টা করবে। এইভাবে, তারা কেবল ক্যাপচা এবং লগইন থ্রোটলিংয়ের মতো সর্বাধিক-প্রচেষ্টা ব্যবস্থাগুলিই পায় না, তাদের সাফল্যের সম্ভাবনাও বাড়ে, যেহেতু সংখ্যাটি সবচেয়ে সাধারণ পাসওয়ার্ড ৪৯.৯৯৫ এর চেয়ে অনেক বেশি
প্রতিটি ব্যবহারকারীর অ্যাকাউন্টের জন্য লগইন অনুরোধগুলি ফাঁকা করে বলুন, রাডারটির নীচে লুকিয়ে থাকতে 30 সেকেন্ডের ব্যবধানে
এখানে, সর্বোত্তম অনুশীলনটি হ'ল ব্যর্থ লগইন সংখ্যা, সিস্টেম-ওয়াইড এবং আপনার সাইটের খারাপ-লগইন ফ্রিকোয়েন্সিটির চলমান গড়কে উপরের সীমাটির ভিত্তি হিসাবে ব্যবহার করা হবে যা আপনি তারপরে সমস্ত ব্যবহারকারীর উপর চাপিয়ে দেন।
খুব বিমূর্ত? আমাকে পুনরায় চাপ দিন:
বলুন যে গত 3 মাসে আপনার সাইটে প্রতিদিন গড়ে 120 টি খারাপ লগইন রয়েছে। (চলমান গড়) ব্যবহার করে, আপনার সিস্টেমটি বিশ্বব্যাপী সীমাটিকে 3 গুণ - হিসাবে নির্ধারণ করতে পারে। ২৪ ঘন্টা সময়কালে 360 ব্যর্থ প্রচেষ্টা ব্যর্থ হয়েছে। তারপরে, যদি সমস্ত অ্যাকাউন্টে মোট ব্যর্থ প্রচেষ্টাগুলির সংখ্যা এক দিনের মধ্যে এই সংখ্যাটি ছাড়িয়ে যায় (বা আরও ভাল, ত্বরণের হার নিরীক্ষণ করে এবং একটি গণনা করা থ্রেশহোল্ডে ট্রিগার), এটি সিস্টেম-ব্যাপী লগইন থ্রোটলিংকে সক্রিয় করে - যার অর্থ সমস্ত ব্যবহারকারীর জন্য সংক্ষিপ্ত বিলম্ব meaning (তবুও, কুকি লগইন এবং / বা ব্যাকআপ CAPTCHA লগইন ব্যতীত)।
আমি আরও বিশদ সহ একটি প্রশ্ন পোস্ট করেছি এবং কীভাবে বিতরণযোগ্য ব্রুট ফোর্স আক্রমণ প্রতিরোধে কৌশলপূর্ণ পিটফালগুলি এড়ানো যায় তার একটি সত্যই ভাল আলোচনা
খণ্ড অষ্টম: দ্বি-ফ্যাক্টর প্রমাণীকরণ এবং প্রমাণীকরণ সরবরাহকারী
শংসাপত্রগুলির সাথে আপস করা যেতে পারে, তা শোষণ, পাসওয়ার্ড লিখে এবং হারিয়ে যাওয়া, কীগুলি সহ ল্যাপটপগুলি, বা ব্যবহারকারীরা ফিশিং সাইটগুলিতে লগইন প্রবেশ করানো হোক। লগইনগুলি দ্বি-ফ্যাক্টর প্রমাণীকরণের সাথে আরও সুরক্ষিত করা যায়, যা একটি ফোন কল, এসএমএস বার্তা, অ্যাপ্লিকেশন, বা ডংলে থেকে প্রাপ্ত একক-ব্যবহার কোডের মতো ব্যান্ড-অফ-ব্যান্ড উপাদান ব্যবহার করে। বেশ কয়েকটি সরবরাহকারী দ্বি-গুণক প্রমাণীকরণ পরিষেবা সরবরাহ করে।
প্রমাণীকরণ সম্পূর্ণরূপে একক সাইন-অন পরিষেবাতে অর্পণ করা যেতে পারে, যেখানে অন্য প্রদানকারী শংসাপত্র সংগ্রহের কাজ পরিচালনা করে। এটি সমস্যাটিকে কোনও বিশ্বস্ত তৃতীয় পক্ষের দিকে ঠেলে দেয়। গুগল এবং টুইটার উভয়ই স্ট্যান্ডার্ড ভিত্তিক এসএসও পরিষেবা সরবরাহ করে, অন্যদিকে ফেসবুক একই মালিকানাধীন সমাধান সরবরাহ করে।
ওয়েব প্রমাণীকরণ সম্পর্কে লিঙ্কগুলি অবশ্যই পড়তে হবে
- প্রমাণীকরণের জন্য OWASP গাইড / OWASP প্রমাণীকরণ চিট শীট
- ওয়েবে ক্লায়েন্ট প্রমাণীকরণের করণীয় এবং করণীয় বিষয় (খুব পঠনযোগ্য এমআইটি গবেষণা পত্র)
- উইকিপিডিয়া: এইচটিটিপি কুকি
- ফলব্যাক প্রমাণীকরণের জন্য ব্যক্তিগত জ্ঞানের প্রশ্ন: ফেসবুকের যুগে সুরক্ষা প্রশ্ন (খুব পঠনযোগ্য বার্কলে গবেষণা পত্র)