সংযুক্ত / এক্সপ্রেজগুলিতে "স্বাক্ষরিত" কুকিগুলি কী কী?


114

আমি "স্বাক্ষরিত কুকিজ" আসলে কী তা বের করার চেষ্টা করছি। নেটে তেমন কিছু নেই, এবং যদি আমি এটি চেষ্টা করি:

app.use(express.cookieParser('A secret'));

তবে তবুও ... কুকিগুলি ব্রাউজারে এখনও 100% স্বাভাবিক, এবং সত্যই আমি জানি না যে এখানে "স্বাক্ষরিত" কী আছে (আমি ক্লায়েন্টের কাছে কিছু অদ্ভুততা "দেখার" প্রত্যাশায় ছিলাম, ডেটা ব্যবহার করে এনক্রিপ্ট করা জাতীয় কিছু ছিল) "গোপন" নুন হিসাবে?)

দস্তাবেজ বলছে ( https://github.com/expressjs/cookie-parser ):

কুকি শিরোলেখকে পার্স করুন এবং req.cookies কুকির নাম অনুসারে কোনও কীড যুক্ত করুন ulate Ptionচ্ছিকভাবে আপনি একটি secretস্ট্রিং পেরিয়ে স্বাক্ষরিত কুকি সমর্থন সক্ষম করতে পারেন , যা নির্ধারিত করে req.secretযাতে এটি অন্য মিডওয়্যারের দ্বারা ব্যবহার করা যেতে পারে।

কেউ কি জানেন?

Merc।

উত্তর:


135

কুকিটি এখনও দৃশ্যমান হবে, তবে এটির একটি স্বাক্ষর রয়েছে, তাই এটি ক্লায়েন্ট কুকিটি পরিবর্তন করে কিনা তা সনাক্ত করতে পারে।

এটি মানটির (বর্তমান কুকি) একটি HMAC তৈরি করে কাজ করে এবং বেস 64 এটি এনকোড করে। কুকিটি পড়ার পরে, এটি স্বাক্ষরটি পুনরায় গণনা করে এবং নিশ্চিত হয়ে যায় যে এটি এতে যুক্ত স্বাক্ষরের সাথে মেলে।

যদি এটি মেলে না, তবে এটি একটি ত্রুটি দেয়।

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

সম্পাদন করা

এবং একটি স্বাক্ষরিত কুকি তৈরি করতে আপনি ব্যবহার করবেন

res.cookie('name', 'value', {signed: true})

এবং একটি স্বাক্ষরিত কুকি অ্যাক্সেস করতে এর signedCookiesঅবজেক্টটি ব্যবহার করুন req:

req.signedCookies['name']

ধন্যবাদ! তবে ... আমি এই মুহুর্তে কুকিতে স্বাক্ষর যুক্ত করতে দেখছি না। অর্থাৎ ক্লায়েন্টে কুকি সেখানে স্বাক্ষর ছাড়াই রয়েছে। কুকি সাইন ইন সক্ষম করার জন্য আমার কী করা দরকার, গোপন বার্তাটি অন্তর্ভুক্ত না করে express.cookieParser()?
Merc

স্তব্ধ থাকুন ... আমি কুকিগুলি দিয়ে সেট করছি res.cookie('somethingElseAgainAndAgain', 'signed? Maybe' );তবে ... আমি এতে সাইন ইন করছি সন্দেহ! কুকি পার্সার () মিডলওয়্যারটি স্বাক্ষরিত কুকিজ বিশ্লেষণের জন্য প্রস্তুত আছে, তবে আমি অবশ্যই সেটিংসটি ঠিকমতো করছি না ... আমাকে কী নিজেই স্বাক্ষর করতে হবে ...?
Merc

6
এটা তোলে ছিল: (res.cookie(name, value, { signed: true }))। ডকুমেন্টেশন থেকে অনুপস্থিত "বিশদ" প্রতিবেদন করা হচ্ছে ...
বুধ

6
একটি অধিবেশন হাইজ্যাক করা অন্যরকম ... এটি ব্যবহারকারী বি ব্যবহারকারীর পরিচয় নিয়েছে এ। স্বাক্ষরিত কুকিগুলি কেবল এটি যাচাই করার এক উপায় যা ব্যবহার করে যে কুকির বিষয়বস্তুগুলি ব্যবহারকারী দ্বারা পরিবর্তন করা হয়নি, সুতরাং বিষয়বস্তু বিশ্বাস করা যায়।
staackuser2

9
ওয়ার্থ উল্লেখ If it does not match, then it will give an error.না একটি ত্রুটি । এই চাবিটির জন্য কেবল অনুরোধ.সাইনড কুকি সেট করা নেই । তাই আরও উপেক্ষিত
বাসারাত

25

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


11

আমি এর উত্তরের উত্তরের জন্য বেশ বিস্তৃত অনুসন্ধান করছি ... এবং এর উত্স কোডটি দেখে সাইন কুকিগুলিতে সাইন করতে cookie-signatureব্যবহার করা cookie-parserহয়েছে যা আমাকে স্বাক্ষরিত কুকিটি কী তা সম্পর্কে আরও ভাল ধারণা দেয়।

valঅবশ্যই কুকির মান, এবং secretআপনি বিকল্প হিসাবে যুক্ত স্ট্রিং cookie-parser

https://github.com/visionmedia/node-cookie-signature/blob/master/index.js#L16


3
এখানে সংরক্ষিত ক্যানোনিকাল লিঙ্কটি রয়েছে: github.com/tj/node-cookie-signature/blob/…

কোড পড়া সত্যিই অনেক ভাল ব্যাখ্যা ছিল। ধন্যবাদ!

0

আমি কুকি-পার্সার 1.4.4 সংস্করণ ব্যবহার করেছি।

আমি ব্রাউজারে স্বাক্ষরিত কুকি এবং স্বাক্ষরিত কুকি এনক্রিপ্ট যুক্ত করতে পারতাম, যদি আমি সম্পাদনাটুকি (ক্রোম প্লাগইন) ব্যবহার করে স্বাক্ষরিত কুকি সম্পাদনা করার চেষ্টা করি তবে কুকি-পার্সার বাহ্যিক পরিবর্তন সনাক্ত করে এবং তারপরে মান হিসাবে মিথ্যা সেট করে।

response.cookie('userId',401,{signed: true})

ব্রাউজারে প্রতিক্রিয়া শিরোনাম, হিসাবে প্রদর্শিত হবে

Set-Cookie: empId=s%3A101.US2oSV4TSvfkvvEQ5fj1sXsjj8rNxx2ph4VdHNTuKX8; Path=/

স্বাক্ষরিত কুকি পান

request.signedCookies

https://gist.github.com/dineshbalaji/607d166f0240f932a5cb02099b0ece4c

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