আমি কীভাবে মাইএসকিউএল ব্যবহারকারীর নাম এবং পাসওয়ার্ডটি ক্ষয় থেকে রক্ষা করতে পারি?


87

জাভা .classফাইলগুলি মোটামুটি সহজেই নিষ্প্রভ করা যায়। কোডটিতে লগইন ডেটা ব্যবহার করতে হলে আমি কীভাবে আমার ডাটাবেস সুরক্ষা দিতে পারি?


আমি আশা করি আপনার আপত্তি মনে করবেন না আমি আপনার প্রশ্নটি পিছনে ফেলেছি। আমি "ব্যবহারকারীর নাম" এবং "পাসওয়ার্ড" মুছে ফেলেছি এবং "বিপরীত ইঞ্জিনিয়ারিং" এবং "ডিকম্পলিং" যুক্ত করেছি। আমি মনে করি তারা মূলগুলির চেয়ে বর্ণনামূলক। মৌলিক বিষয়ে দুর্দান্ত প্রশ্ন, যাইহোক!
উইলিয়াম ব্রেন্ডেল

6
নোট করুন যে আপনি জাভা ব্যবহার করছেন তা এখানে প্রকৃতপক্ষে সুখী নয়। যে কোনও ভাষায় হার্ড-কোডেড পাসওয়ার্ড থাকা একইভাবে সমস্যাযুক্ত ("স্ট্রিংস দ্য বাইনারি" সি প্রোগ্রামগুলিতে স্ট্রিং ধ্রুবকগুলি দেখায়)।
জোছিম সউর

@ সাউয়া: সত্য, তবে জাভাতে ব্যবহারকারীর নাম এবং পাসওয়ার্ডগুলি কীভাবে ডিকুয়াল করা যায় সে সম্পর্কে কেউ কেউ কিছু নমুনা কোড পোস্ট করবেন। আমার কাছে সময় থাকলে আমি নিজেও এটি করতে পারি।
উইলিয়াম ব্রেন্ডেল

4
আমি লক্ষ করেছি যে প্রচুর উত্তর মনে করে যে আপনি অ্যাপ্লিকেশনটি চালাচ্ছেন যখন ব্যবহারকারী ঠিক আছে তখন আপনি অননুমোদিত ব্যবহারকারীর কাছ থেকে ব্যবহারকারীর নাম / পাসওয়ার্ডগুলি গোপন করার চেষ্টা করছেন। আমি বিশ্বাস করি আপনার কাছ থেকে পাসওয়ার্ড লুকাতে চান সবার । প্রশ্নে এটি স্পষ্ট করুন।
pek

4
উদাহরণস্বরূপ, বলুন যে শংসাপত্রগুলি কোনও সার্ভারের সাথে সংযোগ করতে ব্যবহৃত হয় যা অ্যাপ্লিকেশন ব্যতীত অন্য কেউ লগইন করতে পারে না।
pek

উত্তর:


124

আপনার কোডটিতে কখনও হার্ড-কোড পাসওয়ার্ড নেই। সম্প্রতি শীর্ষস্থানীয় 25 সবচেয়ে বিপজ্জনক প্রোগ্রামিং ভুলগুলিতে এটি প্রকাশিত হয়েছিল :

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

পাসওয়ার্ড সহ আপনার কনফিগারেশন সম্পর্কিত তথ্য পৃথক ফাইলে সংরক্ষণ করা উচিত যা অ্যাপ্লিকেশনটি শুরু হয় reads পচনশীল হওয়ার ফলে পাসওয়ার্ড ফাঁস হওয়া থেকে রোধ করার একমাত্র আসল উপায় (এটি কখনই শুরু করতে বাইনারিতে সংকলন করবেন না)।

এই সাধারণ ভুল সম্পর্কে আরও তথ্যের জন্য, আপনি CWE-259 নিবন্ধটি পড়তে পারেন । নিবন্ধটিতে আরও বিশদ সংজ্ঞা, উদাহরণ এবং সমস্যা সম্পর্কে প্রচুর অন্যান্য তথ্য রয়েছে।

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

import java.util.prefs.Preferences;

public class DemoApplication {
  Preferences preferences = 
      Preferences.userNodeForPackage(DemoApplication.class);

  public void setCredentials(String username, String password) {
    preferences.put("db_username", username);
    preferences.put("db_password", password);
  }

  public String getUsername() {
    return preferences.get("db_username", null);
  }

  public String getPassword() {
    return preferences.get("db_password", null);
  }

  // your code here
}

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

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

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

প্রথম কেস: ব্যবহারকারী ডাটাবেস লগইন শংসাপত্রগুলি জানার জন্য অনুমোদিত is

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

দ্বিতীয় কেস: ব্যবহারকারীর কাছ থেকে লগইন শংসাপত্রগুলি আড়াল করার চেষ্টা করা হচ্ছে

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

সঠিক কেস: একটি বহু-স্তরীয় আর্কিটেকচার ব্যবহার করে

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

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

ক্রিয়াকলাপের মূল ক্রমটি হ'ল:

  1. ক্লায়েন্ট ব্যবহারকারীর ব্যক্তিগত ব্যবহারকারীর নাম / পাসওয়ার্ড ব্যবহার করে ব্যবসায় যুক্তিযুক্ত স্তরের সাথে প্রমাণীকরণ করে। ব্যবহারকারীর নাম এবং পাসওয়ার্ড ব্যবহারকারীর কাছে পরিচিত এবং কোনওভাবেই ডাটাবেস লগইন শংসাপত্রগুলির সাথে সম্পর্কিত নয়।
  2. যদি প্রমাণীকরণটি সফল হয়, ক্লায়েন্টটি ব্যবসায়িক লজিক স্তরে ডেটাবেস থেকে কিছু তথ্য চেয়ে একটি অনুরোধ করে। উদাহরণস্বরূপ, পণ্যগুলির একটি জায়। নোট করুন যে ক্লায়েন্টের অনুরোধটি কোনও এসকিউএল কোয়েরি নয়; এটি যেমন একটি দূরবর্তী প্রক্রিয়া কল getInventoryList
  3. ব্যবসায়ের লজিক স্তরটি ডাটাবেসের সাথে সংযুক্ত হয় এবং অনুরোধ করা তথ্য পুনরুদ্ধার করে। ব্যবসায়ের লজিক স্তরটি ব্যবহারকারীর অনুরোধের ভিত্তিতে একটি সুরক্ষিত এসকিউএল কোয়েরি গঠনের দায়িত্বে থাকে। এসকিউএল কোয়েরির কোনও পরামিতি এসকিউএল ইনজেকশন আক্রমণ রোধ করতে স্যানিটাইজ করা উচিত।
  4. ব্যবসায়ের লজিক স্তর ক্লায়েন্ট অ্যাপ্লিকেশনটিতে তালিকা তালিকাটি প্রেরণ করে।
  5. ক্লায়েন্ট ব্যবহারকারীদের জন্য তালিকা তালিকা প্রদর্শন করে।

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


4
এটি কীভাবে কাউকে ব্যবহারকারীর নাম / পাসওয়ার্ড পেতে বাধা দেয়? আপনি কি তখন ফাইল থেকে পড়তে পারবেন না?
জো ফিলিপস

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

আমি মনে করি ধারণাটিটি হ'ল অ্যাপটি চালাচ্ছেন এমন ব্যবহারকারী আপনি এটিকে চালিয়ে যাওয়ার চেষ্টা করছেন না। যদি এটি হয় তবে আপনাকে এটি এনক্রিপ্ট করতে হবে।
মাইকেল হরেন

হ্যাঁ, মাইকেল ঠিক বলেছেন। মূলত ধারণাটি হ'ল আপনি ইতিমধ্যে ব্যবহারকারীর নাম / পাসওয়ার্ডটি জানেন, সুতরাং এটি নিজের থেকে আড়াল করার দরকার নেই। এটি ফাইল ব্যবহারকারীদের মাধ্যমে অন্য ব্যবহারকারীদের কাছ থেকে লুকানো থাকবে।
উইলিয়াম ব্রেন্ডেল

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

15

অ্যাপ্লিকেশনটি পড়বে এমন কোনও ফাইলের মধ্যে পাসওয়ার্ডটি রাখুন। কোনও উত্স ফাইলে এম্বেড পাসওয়ার্ড কখনও নেই। পিরিয়ড।

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


7
যদিও এটি পরে পাসওয়ার্ডগুলি পরিবর্তন করা কিছুটা সহজ করে তোলে, এটি বেসিক সুরক্ষা সমস্যাটি সমাধান করে না।
ব্রায়ান নোব্লাচ

হ্যাঁ এটা করে. উইলিয়াম ব্রেন্ডেলের উত্তরও দেখুন।
কেলটিয়া

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

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

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

3

আপনি কি ওয়েব অ্যাপ্লিকেশন লিখছেন? যদি তা হয় তবে অ্যাপ্লিকেশনটিতে এটি বাহ্যিকভাবে কনফিগার করতে জেএনডিআই ব্যবহার করুন। একটি ওভারভিউ এখানে উপলব্ধ :

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


প্রদত্ত লিঙ্কটি খারাপ
জেমস ওরাভেক

2

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

সবচেয়ে ভাল উপায় হ'ল কোথাও কোনও পাসওয়ার্ড সংরক্ষণ করা নয়। পাসওয়ার্ড হ্যাশগুলি উত্পাদন এবং সঞ্চয় করতে হ্যাশ ফাংশন ব্যবহার করে এটি অর্জন করা হয়েছে:

hash("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
hash("hbllo") = 58756879c05c68dfac9866712fad6a93f8146f337a69afe7dd238f3364946366

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

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

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

  1. আপনার ব্যবহারকারী শংসাপত্রগুলি প্রবেশ করে এবং এটি পাসওয়ার্ড হ্যাশের বিপরীতে বৈধ হয়েছে
  2. পাসওয়ার্ড হ্যাশগুলি পাসওয়ার্ড নয়, উত্পন্ন এবং সঞ্চয় করা হয়
  3. হ্যাশগুলি একাধিকবার সঞ্চালিত হয়
  4. এলোমেলোভাবে উত্পন্ন লবণ ব্যবহার করে হ্যাশগুলি উত্পন্ন হয়
  5. হ্যাশগুলি একটি ব্যক্তিগত কী দিয়ে এনক্রিপ্ট করা আছে
  6. ব্যক্তিগত কীগুলি হ্যাশগুলির চেয়ে শারীরিকভাবে পৃথক স্থানে সংরক্ষণ করা হয়
  7. ব্যক্তিগত কীগুলি সময় ভিত্তিক ফ্যাশন আপডেট হয়
  8. এনক্রিপ্ট করা হ্যাশগুলি অংশগুলিতে ভাগ করা হয়েছে
  9. এই খণ্ডগুলি শারীরিকভাবে পৃথক স্থানে সংরক্ষণ করা হয়

স্পষ্টতই আপনি গুগল বা ব্যাংক নন, সুতরাং এটি আপনার জন্য একটি ওভারকিল সমাধান। তবে তারপরে প্রশ্ন আসে: আপনার প্রকল্পের কতটা সুরক্ষা প্রয়োজন, আপনার কত সময় এবং অর্থ আছে?

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

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


1

এই প্রশ্নটি কীভাবে কোনও এনক্রিপ্ট করা ফাইলে পাসওয়ার্ড এবং অন্যান্য ডেটা সংরক্ষণ করবেন তা দেখায়: জাভা 256-বিট এইএস পাসওয়ার্ড-ভিত্তিক এনক্রিপশন


4
কোথাও সোর্স কোডে এখনও সংযোগ তৈরি করতে এনক্রিপ্ট করা পাসওয়ার্ড ডিক্রিপ্ট করতে হবে, এই বিবেচিত পাসওয়ার্ডটি এখনও রয়েছে।
বিয়ার0x3 এফ

0

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


আমি এমন লোকদের কথা শুনেছি যারা সমস্ত সম্ভাব্য স্ট্রিং সংমিশ্রণ তৈরি করে এবং তাদের এমডি 5 হ্যাশগুলি সংরক্ষণ করে। সুতরাং তারা যখন কারওর MD5 হ্যাশ পেয়েছে, কেবলমাত্র তারা সংরক্ষণ করা হ্যাশটি খুঁজে পেয়েছে এবং তারা সম্পর্কিত স্ট্রিংটি পাবে।
নাভি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.