আপনি যদি জেডাব্লুটিটি ডিকোড করতে পারেন তবে তারা কীভাবে সুরক্ষিত?


302

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

আমি জানি তারা অবশ্যই সুরক্ষিত থাকবে তবে আমি কেবল প্রযুক্তিগুলি বুঝতে চাই to আমি কী মিস করছি?


1
md5('original messaged' + secret) != md5('changed message' + secret)সুতরাং কেউ যদি বার্তা পরিবর্তন করে তবে আপনি এটি সনাক্ত করতে পারেন
পিথিকোস

আদর্শ ক্ষেত্রে সত্য, তবে এমডি 5 এর সংঘর্ষ রয়েছে। @ পিথিকোস
যশ কুমার ভার্মা

@ যশকুমার ভার্মা হ্যাঁ, সবাই এমডি 5 জানেন বলে এটির সংক্ষিপ্তসারটি প্রদর্শন করা।
পিথিকোস

@ পিথিকস আপনি কীভাবে মূল বার্তাটি জানেন?
ব্যবহারকারী 1955934

1
@ user1955934 এটা base64 এনকোড, তাই না এনক্রিপ্ট করা হবে। আপনি যে কোনও বেস 64 ডিকোডার দিয়ে কেবল এটি ডিকোড করতে পারেন।
পিথিকোস

উত্তর:


386

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

আপনার মন্তব্যের জবাব: আমি আপনার মন্তব্যটি সঠিকভাবে বুঝতে পারছি কিনা তা নিশ্চিত নই। কেবলমাত্র নিশ্চিত হতে: আপনি কি ডিজিটাল স্বাক্ষরগুলি জানেন এবং বুঝতে পারবেন? আমি কেবলমাত্র একটি বৈকল্পিক সংক্ষেপে ব্যাখ্যা করব (এইচএমএসি, যা প্রতিসম, তবে আরও অনেকগুলি রয়েছে)।

ধরা যাক অ্যালিস ববকে একটি JWT প্রেরণ করতে চায়। তারা দুজনেই কিছু ভাগ করে নেওয়া গোপন বিষয়টি জানেন। ম্যালরি সেই গোপন কথাটি জানেন না, তবে জেডাব্লুটিটিতে হস্তক্ষেপ এবং পরিবর্তন করতে চান। এটি রোধ করতে, অ্যালিস Hash(payload + secret)এটি স্বাক্ষর হিসাবে গণনা করে এবং সংযোজন করে।

বার্তাটি গ্রহণ করার সময়, বব Hash(payload + secret)স্বাক্ষরটি মেলে কিনা তা যাচাই করতেও গণনা করতে পারেন । তবে, ম্যালরি কন্টেন্টে কিছু পরিবর্তন করে, তিনি ম্যাচের স্বাক্ষর গণনা করতে পারবেন না (যা হবে Hash(newContent + secret))। তিনি গোপন বিষয়টি জানেন না এবং এটি খুঁজে বের করার কোনও উপায় নেই। এর অর্থ যদি সে কিছু পরিবর্তন করে তবে স্বাক্ষরটি আর মেলে না, এবং বব কেবল আর জেডব্লিউটি গ্রহণ করবে না।

ধরা যাক, আমি অন্য একজনকে বার্তাটি প্রেরণ করেছি {"id":1}এবং এতে স্বাক্ষর করছি Hash(content + secret)। (এখানে কেবল কনক্রিটেশন)। আমি ভিন্ন ধরনের SHA256 হ্যাশ ফাংশন ব্যবহার করুন, এবং স্বাক্ষর আমি পেতে হল: 330e7b0775561c6e95797d4dd306a150046e239986f0a1373230fda0235bda8c। এখন আপনার পালা: ম্যালোরির ভূমিকা পালন করুন এবং বার্তাটি স্বাক্ষর করার চেষ্টা করুন {"id":2}। আপনি পারবেন না কারণ আপনি জানেন না আমি কোন গোপন ব্যবহার করেছি। যদি আমি অনুমান করি যে প্রাপক গোপনীয়তা জানেন তবে তিনি কোনও বার্তার স্বাক্ষর গণনা করতে পারেন এবং এটি সঠিক কিনা তা পরীক্ষা করতে পারেন।


8
সুতরাং পে-লোড পরিবর্তন হলে স্বাক্ষরটি পরিবর্তন হয়? টোকেনটি আমি এই শিরোনামে ছিলাম [শিরোনাম] বিন্যাসে [ যদি ঘটনাটি ঘটে থাকে তবে সেই গোপনীয়তার জন্য আলাদা আইডি সহ একটি পেডলোড কি একই হত না? যেমন যদি ডেটাটি {id: 1 was ছিল এবং এটি গোপনের সাথে টোকেনের স্বাক্ষর অংশ গণনা করতে ব্যবহৃত হয়, তার মানে এই নয় যে {id: 2 user ব্যবহারকারীর জন্য বৈধ হবে 2 এবং তাই ব্যবহারকারী 1 পরিবর্তন করতে পারে আইডিতে 2 এবং টোকেন একই হবে?
পিক্সমাচ

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

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

30
আমার একটি সম্পর্কিত প্রশ্ন আছে কাউকে অনুলিপি করা জেডাব্লুটিটির সাথে অ্যালিসের ছদ্মবেশ তৈরি করা থেকে বাধা কী?
মোড়লেস

25
কারও কাছে জেডব্লিউটি থাকলে তারা অ্যালিসের ছদ্মবেশ তৈরি করতে পারে। সুতরাং আপনি কীভাবে এটি সঞ্চয় এবং প্রেরণ করবেন সে সম্পর্কে আপনার যত্নবান হওয়া দরকার। পে-লোডে এর জন্য আপনারও একটি মেয়াদ নির্ধারণ করা উচিত। যদি কেউ জেডাব্লুটিটি চুরি করে তবে তাদের এটির ব্যবহারের সীমিত সময়সীমা থাকতে হবে। Stormpath.com/blog/…
অ্যান্ডারসন

134

আপনি যেতে পারেন jwt.io, আপনার টোকেন আটকান এবং বিষয়বস্তু পড়তে পারেন। এটি প্রাথমিকভাবে প্রচুর লোকের জন্য ব্যঙ্গ করছে।

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

যৌক্তিক প্রশ্নটি এনক্রিপ্ট করা সামগ্রীগুলির সাথে নিজেকে সম্পর্কিত না করার প্রেরণা কী?

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

  2. এটি জিনিস সহজ রাখে। একটি সাধারণ বাস্তবায়ন গ্রহণ গ্রহণকে সহজ করে তোলে তবে এটি প্রতিটি স্তরকে এটি সর্বোত্তমভাবে করতে দেয় (HTTPS এনক্রিপশন পরিচালনা করতে দেয়)।

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

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


4
মনে রেখ!
জেডাব্লুটিটি

তবে জেডব্লিউটি যদি কেবল এইচটিটিপিএস-এর মাধ্যমে সুরক্ষিত থাকে তবে কেন কেবল পেডলোড পাঠানো হবে না? পোস্ট -> ব্যবহারকারীর নাম, পাসওয়ার্ড। এটি এখনও এনক্রিপ্ট করা আছে?
গিপপিক

@ জিপপিক এর জন্য আপনার জেডব্লিউটি বেসিকগুলি পড়তে হবে তবে আপনার মতো সেশন আথটি প্রায়শই আপনার প্রয়োজন হয় is জেডব্লিউটি কিছু অন্যান্য সুবিধাগুলি সরবরাহ করে তবে কিছু ট্রেডঅফস করেছে
ওয়েবক্লেটন.

17

একটি জসন ওয়েব টোকেন (জেডাব্লুটি) এর সামগ্রীগুলি সহজাতভাবে সুরক্ষিত নয়, তবে টোকেনের সত্যতা যাচাই করার জন্য একটি বিল্ট-ইন বৈশিষ্ট্য রয়েছে। একটি JWT হল পিরিয়ড দ্বারা পৃথক করা তিনটি হ্যাশ। তৃতীয়টি স্বাক্ষর। একটি পাবলিক / প্রাইভেট কী সিস্টেমে, জারিকারী একটি প্রাইভেট কী দিয়ে টোকেন স্বাক্ষর স্বাক্ষর করে যা কেবলমাত্র তার সম্পর্কিত পাবলিক কী দ্বারা যাচাই করা যেতে পারে।

ইস্যুকারী এবং যাচাইকারীর মধ্যে পার্থক্য বোঝা গুরুত্বপূর্ণ। টোকেনের প্রাপক এটি যাচাই করার জন্য দায়বদ্ধ।

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

আরও পড়ুন: পাবলিক কী কীভাবে স্বাক্ষরটি যাচাই করে?


2

আসুন শুরু থেকেই অস্বীকার করা যাক:

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

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

টোকেন একটি ব্যবহার করে তৈরি করেছেন গোপন স্ট্রিং যে একটি সার্ভারে সংরক্ষণ করা । এর পরে, সার্ভারটি সেই জেডাব্লুটিটি ক্লায়েন্টকে ফেরত পাঠায় যা এটি কোনও কুকি বা স্থানীয় সঞ্চয়স্থানে সংরক্ষণ করবে। এখানে চিত্র বর্ণনা লিখুন

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

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

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

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

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

এই সমস্ত যোগাযোগ অবশ্যই https এর মধ্যে ঘটবে, সুতরাং এনক্রিপ্ট হওয়া এইচটিটিপি সুরক্ষিত করুন যাতে কেউ পাসওয়ার্ড বা জসন ওয়েব টোকনে অ্যাক্সেস পেতে পারে। তবেই আমাদের একটি সত্যিকারের সুরক্ষিত সিস্টেম রয়েছে।

এখানে চিত্র বর্ণনা লিখুন

সুতরাং একটি জসন ওয়েব টোকন দেখতে এই স্ক্রিনশটের বাম অংশের মতো মনে হচ্ছে যা JWt.ioSo এ JWT ডিবাগার থেকে নেওয়া হয়েছিল, এটি তিনটি অংশ নিয়ে গঠিত একটি এনকোডিং স্ট্রিং। শিরোনাম, পে-লোড এবং স্বাক্ষর এখন শিরোনামটি টোকেন নিজেই সম্পর্কে কিছুটা মেটাডেটা এবং পে-লোড এমন ডেটা যা আমরা টোকনে এনকোড করতে পারি, যে তথ্যটি আমরা চাই সত্যই। সুতরাং আমরা এখানে যত বেশি ডেটা এনকোড করতে চাই তার চেয়ে বড় JWT। যাইহোক, এই দুটি অংশ হ'ল সরল পাঠ্য যা এনকোড হবে তবে এনক্রিপ্ট করা হবে না।

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

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

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

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

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

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


1

আপনার সার্ভারে থাকা কেবল জেডব্লিউটি-র প্রাইভেটকিই এনক্রিপ্টড জেডাব্লুটি কে ডিক্রিপ্ট করবে। যারা প্রাইভেটকে জানেন তারা এনক্রিপ্ট করা জেডাব্লুটিটি ডিক্রিপ্ট করতে সক্ষম হবেন।

আপনার সার্ভারে কোনও নিরাপদ স্থানে প্রাইভেটকে লুকান এবং কাউকে কখনও প্রাইভেটকে বলুন না।


1
জেডব্লিউটি সর্বদা এনক্রিপ্ট করা হয় না। এগুলিতে স্বাক্ষর করা, এনক্রিপ্ট করা, স্বাক্ষর করা পরে এনক্রিপ্ট করা বা এনক্রিপ্ট করা যেতে পারে বা স্বাক্ষরিত হতে পারে।
csauve

0

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

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


-1

আমি ডাব্ল্রিপ্ট করার জন্য jwt.io তে উপস্থিত নেই এমন বিশেষ অ্যালগরিদম ব্যবহার করে জেডব্লিউই একবার দেখে নেওয়ার পরামর্শ দেব

রেফারেন্স লিঙ্ক: https://www.npmjs.com/package/node-webtokens

jwt.generate('PBES2-HS512+A256KW', 'A256GCM', payload, pwd, (error, token) => {
  jwt.parse(token).verify(pwd, (error, parsedToken) => {
    // other statements
  });
});

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

একটি সাধারণ উদাহরণ যা আমি তৈরি করেছি: https://github.com/hansiemithun/jwe-example

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