ওয়ার্ডপ্রেস অপশন ডিবিতে কীভাবে ইউজারনেম এবং পাসওয়ার্ড এপিআইতে জমা করবেন?


19

আমি বর্তমানে একটি প্লাগইন বিকাশ করছি এবং সম্ভাবনা হ'ল আমি সম্ভবত এটি পাবলিক প্লাগইন সংগ্রহস্থলে প্রকাশ করব যাতে অন্যরা এটি ব্যবহার করতে পারে।

প্লাগইনটি একটি এআইপিআই ব্যবহার করবে এবং এই এপিআই ব্যবহার করতে আপনাকে একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড পাস করতে হবে। সুতরাং আমার প্লাগইনকে এই লগইন শংসাপত্রগুলি ডাটাবেসে সংরক্ষণ করতে হবে। আমি এগুলিকে সরল পাঠ্যে সঞ্চয় করতে চাই না যদিও এপিআই-এর সরল পাঠ্যে তাদের প্রয়োজন।

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

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


3
এটি ধরণের অবিশ্বাস্য। এটির বিপরীতমুখী হওয়া দরকার হলে আপনি কতটা এনক্রিপ্ট করেন তা বিবেচ্য নয়। যদি ডাব্লুপি এটি ডিক্রিপ্ট করতে পারে এবং ডাব্লুপি আপোস করা হয় তবে এনক্রিপশন কোনও বিষয় নয়।
রাস্ট

তবে আপনার এপিআই এর পাসওয়ার্ডটি কেন জানা দরকার? এপিআই যদি জানতে পারে যে ব্যবহারকারী পাসওয়ার্ড জানেন?
onetrickpony

1
@ এক ট্রিক পনি - পাসওয়ার্ডটি সংরক্ষণ করা দরকার যাতে ব্যবহারকারীর হস্তক্ষেপ ছাড়াই প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে চালিত হতে পারে।
ব্র্যাডি

1
@ রর্স্ট - আমি সচেতন যে যদি ডাব্লুপিপি আপোস করে তবে পাসওয়ার্ডগুলিও তাই। আমি এই প্রতিরোধ করতে পারি না। আমি যা আটকাতে পারি তা হ'ল যদি কোনও এসকিউএল ডাম্প পাওয়া যায় তবে পাসওয়ার্ডগুলি সরল পাঠ্যে নেই।
ব্র্যাডি

ব্র্যাডি হ্যাঁ, যদি কেবল এসকিউএল ডাম্প আপস করা হয় তবে এনক্রিপশন সাহায্য করবে help তবে আমি এ জাতীয় দৃশ্য অসম্ভব বলে মনে করি। আপনার যদি ডাটাবেস অ্যাক্সেস থাকে তবে ডব্লিউপি-তেও আপস করা তুচ্ছ।
রাস্ট

উত্তর:


4

আমি পূর্বের উত্তরগুলির সাথে একমত হওয়ার পরে, আপনি যে প্রশ্নটি করেছিলেন আসলে তার জবাব দিতে, যা মনে আসে তা হ'ল wp-config.php এর জন্য এই ধ্রুবকগুলির মধ্যে একটি ব্যবহার করা:

সংজ্ঞায়িত ('AUTH_KEY', 'redacted');
সংজ্ঞায়িত করুন ('SECURE_AUTH_KEY', 'redacted');
সংজ্ঞা দিন ('LOGGED_IN_KEY', 'redacted');
সংজ্ঞায়িত ('NONCE_KEY', 'redacted');

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

এনক্রিপশন / ডিক্রিপশন ফাংশন হিসাবে - একটি তাত্ক্ষণিক গুগল অনুসন্ধান নীচের তালিকাটি কোডের সাথে ফিরিয়ে দেয় যা বিলের সাথে মানানসই মনে হয়: http://maxvergelli.wordpress.com/2010/02/17/easy-to-use-and-স্ট্র- এনক্রিপশন-ডিক্রিপশন-পিএইচপি-ফাংশন /

ফাংশন এনক্রিপ্ট ($ ইনপুট_স্ট্রিং, $ কী)
    iv iv_size = mcrypt_get_iv_size (MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    iv iv = mcrypt_create_iv ($ iv_size, MCRYPT_RAND);
    $ h_key = হ্যাশ ('sha256', $ কী, সত্য);
    বেস 64৪_encode (mcrypt_encrypt (MCRYPT_RIJNDAEL_256, $ h_key, $ ইনপুট_স্ট্রিং, MCRYPT_MODE_ECB, $ iv)) রিটার্ন করুন;
}

ফাংশন ডিক্রিপ্ট ($ এনক্রিপ্টড_ইনপুট_স্ট্রিং, $ কী)
    iv iv_size = mcrypt_get_iv_size (MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    iv iv = mcrypt_create_iv ($ iv_size, MCRYPT_RAND);
    $ h_key = হ্যাশ ('sha256', $ কী, সত্য);
    ট্রিম রিটার্ন (mcrypt_decrypt (MCRYPT_RIJNDAEL_256, $ এইচ_কি, বেস 64_ডেকোড ($ এনক্রিপ্টড_ইনপুট_ স্ট্রিং), এমসিআরওয়াইপT_MODE_ECB, $ iv));
}

এখানে ব্যবহৃত AES এনক্রিপশনের কয়েকটি ডকুমেন্টেশন এখানে রয়েছে: http://www.chilkatsoft.com/p/php_aes.asp


4

এটি হ'ল OAuth এর জন্যই তৈরি হয়েছিল।

থেকে OAuth এর হোমপেজে :

পরিষেবা সরবরাহকারী বিকাশকারীদের জন্য ...

আপনি যদি সমর্থন করছেন ...

  • ওয়েব অ্যাপ্লিকেশন
  • সার্ভার-সাইড এপিআই
  • ম্যাশআপস

আপনি যদি আপনার ব্যবহারকারীর পক্ষে সুরক্ষিত ডেটা সংরক্ষণ করেন তবে অ্যাক্সেস পেতে তাদের পাসওয়ার্ডগুলি ওয়েবে ছড়িয়ে দেওয়া উচিত নয়। আপনার ব্যবহারকারীদের তাদের অ্যাকাউন্ট শংসাপত্রগুলি সুরক্ষিত করার সময় তাদের ডেটাতে অ্যাক্সেস দিতে OAuth ব্যবহার করুন।

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

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

আপনি যদি এর কোনও উদাহরণ ক্রিয়াতে দেখতে চান তবে জেটপ্যাকটি দেখুন

আপনি প্লাগইনটি সক্রিয় করার সময় এটি এর সাথে সংযুক্ত না থাকার অভিযোগ করে। আপনি যখন এটি "সংযুক্ত" করেন, আপনি WordPress.com এর মাধ্যমে আপনার শংসাপত্রগুলি প্রবেশ করেন এবং ওয়ার্ডপ্রেস এবং তাদের এপিআইয়ের মধ্যে OAuth মিথস্ক্রিয়া স্থাপন করেন।

কিন্তু আপনি শুধুমাত্র এই যা করতে হবে একবার এবং আপনার WordPress.com ব্যবহারকারীর নাম / পাসওয়ার্ড হয় না আপনার স্থানীয় ওয়ার্ডপ্রেস ডাটাবেসের মধ্যে সংরক্ষণ করা হয়।


1
এটি ব্যবহার করতে ভাল লাগবে তবে আমি যে এপিআইয়ের সাথে ডিল করছি তা আমার নয় এবং তাদের কোনও OAuth সিস্টেম নেই।
ব্র্যাডি

1
সেক্ষেত্রে আপনার একমাত্র আসল বিকল্পটি হ'ল এটি আপনাকে মেনে নিতে হবে যে আপনাকে পাসওয়ার্ড ডিবিতে সংরক্ষণ করতে হবে এবং আপনি এটি এনক্রিপ্ট করেছেন কিনা তা সুরক্ষার থেকে কোনও পৃথক নয়। যেমনটি উপরে উল্লিখিত রয়েছে, এটি ডিবিতে থাকলে এবং এনক্রিপশনটি যদি বিপরীত হয়, তবে ওয়ার্ডপ্রেস (বৈধ বা হ্যাক) অ্যাক্সেস সহ যে কেউ এটিকে ধরে রাখতে পারবেন।
EAMAN

0

এটি একটি গুরুত্বপূর্ণ সমস্যা, কারণ অনেক পরিষেবা এখনও OAuth সমর্থন করে না এবং বিকল্পগুলি ডাটাবেসে পাসওয়ার্ডগুলি সংরক্ষণ করে প্রতিটি একক ওয়ার্ডপ্রেস প্লাগইনে তাদের পঠনযোগ্য করে তোলে (উপরে আমার মন্তব্য দেখুন)।

এটি (এখনও) প্রশ্নের সত্যিকারের উত্তর নয়, তবে কোনও মন্তব্যের জন্যও এটি দীর্ঘ। আমি এই "অবিশ্বাস্য" সমস্যার সমাধানের "সেরা" সম্ভাব্য সমাধান নিয়ে আসার লক্ষ্য নিয়ে এ নিয়ে একটি আলোচনার সূত্রপাত করব বলে আশা করি।

মূল ধারণা যা আমাকে মনে করে যে পাসওয়ার্ড এনক্রিপ্ট করা সম্ভব তা নিম্নলিখিত:

প্রতিটি ব্যবহারকারীর কাছে একটি গোপন তথ্য রয়েছে: তাদের ওয়ার্ডপ্রেস পাসওয়ার্ড। তৃতীয় পক্ষের পরিষেবাগুলিতে শংসাপত্রগুলি সেই গোপন পাসওয়ার্ডের সাথে গোপন করা ফর্মের সাথে এনক্রিপ্ট করা এবং ব্যবহারকারী লগ ইন করার পরে কেবল সেগুলি ডিক্রিপ্ট করা সম্ভব should

এইভাবে কমপক্ষে ওয়ার্ডপ্রেস ফাইল এবং ডাটাবেসের একটি অনুলিপি থেকে পাসওয়ার্ড চুরি করা অসম্ভব হয়ে উঠা উচিত। এটি অন্যান্য প্লাগইনগুলির শংসাপত্রগুলি চুরির সমস্যার সমাধান করতে পারে না কারণ প্রতিটি প্লাগইন লগইন করার সময় সাধারণ পাঠ্য পাসওয়ার্ড ক্যাপচার করতে পারে।

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

আমার এই অনুভূতিটি থাকা সত্ত্বেও এই কাজটি করা সম্ভব হওয়া উচিত, তবে বেশ কয়েকটি অমীমাংসিত সমস্যা রয়েছে:

  1. কীভাবে এনক্রিপশন করবেন? সম্ভবত ব্যবহারকারী প্লে-আউট পাসওয়ার্ড সংরক্ষণ করতে পারে যতক্ষণ না ব্যবহারকারী লগ আউট করে এবং আবার এনক্রিপশন না করে 'authenticate'। এটি সংক্ষিপ্ত না হওয়া অবধি ব্যবহারকারীকে পিরিয়ড রাখতে লগ ইন করতে অনুরোধ করা যেতে পারে।
  2. কী সংরক্ষণ করবেন এবং লগ আউট করার সময় কীভাবে এটি মুছবেন? আমি কি সঠিকভাবে বুঝতে পারি যে 'authenticate'কেবল তখন ব্যবহারকারীর আসলে লগইন করা হয়?
  3. যদি এখন হ্যাশ পাসওয়ার্ড সংরক্ষণের উপায় রয়েছে তবে সম্ভবত কেউ সেশন কুকি থেকে একটি চাবি অর্জন করতে পারে?
  4. পাসওয়ার্ড পরিবর্তনগুলি কে পরিচালনা করবেন? দেখে মনে হচ্ছে এই জাতীয় পাসওয়ার্ডের পরিবর্তনগুলি ধরা সম্ভব এবং তৃতীয় পক্ষের পাসওয়ার্ডটি নতুন পাসওয়ার্ড থেকে প্রাপ্ত কী দিয়ে পুনরায় এনক্রিপ্ট করতে হবে।
  5. মাল্টি ইউজার সাপোর্ট দেওয়ার কি কোনও উপায় আছে? আদর্শভাবে একজন চাইবেন যে কোনও প্রশাসক ব্যবহারকারী সেটিংসে তৃতীয় পক্ষের পাসওয়ার্ড সেট করতে সক্ষম হবেন যা তত্কালীন পরিষেবাগুলির সাথে ইন্টারঅ্যাক্ট করার জন্য কম সুবিধা প্রাপ্ত ব্যবহারকারীরা মামলা করতে পারেন, এমনকি এমনকি এই পাসওয়ার্ডগুলি প্রকাশ না করেই। এর জন্য, অ্যাডমিন ব্যবহারকারীর সমস্ত ব্যবহারকারীদের জন্য একটি কী তৈরি করতে সক্ষম হওয়া দরকার যা অন্য ব্যবহারকারীরা কেবল নিজেরাই তৈরি করতে পারে। এটা কি কোনওভাবে সম্ভব?
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.