এইচটিটিপিএস কোয়েরি স্ট্রিং কি সুরক্ষিত?


351

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

উত্তর:


452

হ্যাঁ, তাই তবে সংবেদনশীল ডেটার জন্য জিইটি ব্যবহার করা বেশ কয়েকটি কারণে একটি খারাপ ধারণা :

  • বেশিরভাগ এইচটিটিপি রেফারার ফুটো (লক্ষ্য পৃষ্ঠায় একটি বহিরাগত চিত্র পাসওয়ার্ড ফাঁস হতে পারে [1])
  • পাসওয়ার্ড সার্ভার লগগুলিতে সংরক্ষণ করা হবে (যা স্পষ্টতই খারাপ)
  • ব্রাউজারগুলিতে ইতিহাসের ক্যাশে

সুতরাং, ক্যোরিস্ট্রিং সুরক্ষিত হওয়া সত্ত্বেও ক্যোরিস্ট্রিংয়ের মাধ্যমে সংবেদনশীল ডেটা স্থানান্তর করার পরামর্শ দেওয়া হয় না।

[1] যদিও আমার নোট করা দরকার যে আরএফসি জানিয়েছে যে ব্রাউজারটি এইচটিটিপিএস থেকে এইচটিটিপিতে রেফারার প্রেরণ করা উচিত নয়। তবে এর অর্থ এই নয় যে এইচটিটিপিএস সাইট থেকে কোনও খারাপ তৃতীয় পক্ষের ব্রাউজার টুলবার বা কোনও বহিরাগত চিত্র / ফ্ল্যাশ এটি ফাঁস করবে না।


4
Https থেকে রেফারেন্সকারীদের সম্পর্কে কী ? আমি যদি কোনও তৃতীয় পক্ষের সাইট থেকে https ব্যবহার করে একটি চিত্র পাচ্ছি? ব্রাউজারটি কি আমার পূর্ববর্তী অনুরোধ থেকে তৃতীয় পক্ষের সার্ভারে পুরো ক্যোয়ারী স্ট্রিংটি প্রেরণ করবে?
Jus12

4
@ জাস 12 হ্যাঁ এটি হ'ল, এটির কোনও অর্থ হবে না তবে এটি এটির মতোই ডিজাইন করা হয়েছে।
ড। মন্দ

2
তাহলে কেন যে OAuth2 স্পেসিফিকেশন কোয়েরি প্যারামিটারগুলিতে সংবেদনশীল ডেটা (ইউআরএল) প্রেরণের জন্য প্রস্তাবিত নয়? যদিও এটি সর্বদা টিএলএস (এইচটিটিপিএস) ব্যবহার করার পরামর্শ দেয়। গত বিন্দু পড়ুন tools.ietf.org/html/draft-ietf-oauth-v2-bearer-16#section-4.3 সিসি @volka
gihanchanuka

@ dr.evil আপনি কি দয়া করে ইস্যুটির বিষয়টি বিস্তারিত History caches in browsersবা ইআর এর জন্য কিছু রেফারেন্স যুক্ত করতে পারেন?
LCJ

1
আপ টু ডেট ইনফোসের সাথে এই উত্তরটি সম্পূর্ণ করতে: securitynewspaper.com/2016/08/01/… (প্রক্সি পিএসি হ্যাক এইচটিটিপিএস ইউআরএলসকে আটকানোর অনুমতি দেয়)
টম

78

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

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


48

হ্যাঁ , আপনার প্রশ্নের স্ট্রিংগুলি এনক্রিপ্ট করা হবে।

পেছনের কারণ হ'ল ক্যোয়ারী স্ট্রিংগুলি HTTP প্রোটোকলের অংশ যা একটি অ্যাপ্লিকেশন স্তর প্রোটোকল, যখন সুরক্ষা (এসএসএল / টিএলএস) অংশটি পরিবহন স্তর থেকে আসে। SSL সংযোগটি প্রথমে প্রতিষ্ঠিত হয় এবং তারপরে ক্যোয়ারী প্যারামিটারগুলি (যা HTTP প্রোটোকলের অন্তর্ভুক্ত) সার্ভারে প্রেরণ করা হয়।

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

https://example.com/login?username=alice&password=12345)
  1. আপনার ক্লায়েন্ট (যেমন ব্রাউজার / মোবাইল অ্যাপ্লিকেশন) প্রথমে ডিএনএস অনুরোধ ব্যবহার করে আপনার ডোমেন নামটি example.comএকটি আইপি ঠিকানায় সমাধান করবে (124.21.12.31)। সেই তথ্যটি জিজ্ঞাসা করার সময়, কেবলমাত্র ডোমেন নির্দিষ্ট তথ্য ব্যবহার করা example.comহবে , কেবলমাত্র ব্যবহৃত হবে।
  2. এখন, আপনার ক্লায়েন্ট আইপি ঠিকানার সাথে সার্ভারের সাথে সংযোগ স্থাপন করার চেষ্টা করবে 124.21.12.31এবং 443 পোর্টের সাথে সংযোগ স্থাপনের চেষ্টা করবে (SSL সার্ভিস পোর্ট ডিফল্ট HTTP পোর্ট 80 নয়)।
  3. এখন, এ সার্ভারটি example.comতার ক্লায়েন্টকে তার শংসাপত্র প্রেরণ করবে।
  4. আপনার ক্লায়েন্ট শংসাপত্রগুলি যাচাই করবে এবং আপনার সেশনের জন্য একটি ভাগ করা গোপন কী বিনিময় শুরু করবে।
  5. সফলভাবে একটি সুরক্ষিত সংযোগ স্থাপনের পরে, কেবল তখনই আপনার কোয়েরি প্যারামিটারগুলি নিরাপদ সংযোগের মাধ্যমে প্রেরণ করা হবে।

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


2
তবে উত্তরটি @ ডিআর দ্বারা দেখুন। মন্দ, কোয়ারিং স্ট্রিং লগ ফাইল এবং ক্যাশে শেষ হতে পারে যাতে এটি সার্ভারে সুরক্ষিত নাও হতে পারে।
zaph

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

সুরক্ষা দৃষ্টিকোণ থেকে কোয়ারি স্ট্রিংয়ে গোপনীয় তথ্য প্রেরণ করা নিরাপদ নয়, এটি কোনও পোস্টে পাঠানো ভাল। এছাড়াও পাসওয়ার্ডটি ক্লায়েন্ট দ্বারা নয়, সার্ভারে সাধারণত হ্যাশ করা হয়। "আপনার ক্লায়েন্টের কাছ থেকে কখনই আপনার পাসওয়ার্ড প্রেরণ করা উচিত নয়" বিবৃতিটি এই প্রশ্নের সাথে বিরোধী (e.g http://example.com/login?username=alice&password=12345)
জাফ

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

@ জেমসডাব্লু " প্রাইভেট কীটি তখন সামনের প্রান্ত থেকে সহজেই ফিরে পাওয়া যায় " কী কী?
কৌতূহলী

28

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

আপনার পদ্ধতির সুরক্ষার বিষয়ে, যথাযথ পরিদর্শন না করে বলার আসল উপায় নেই।


27
ব্রাউজার এবং সার্ভারের মধ্যে কেবল যোগাযোগের চেয়ে সুরক্ষার আরও অনেক কিছুই রয়েছে
জো ব্লগস

26

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

এই সুরক্ষা ভাঙ্গার বিভিন্ন উপায় রয়েছে।

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

আপনার অনুরোধগুলি ব্রাউজারের ইতিহাসেও দৃশ্যমান হবে। ব্যবহারকারীদের সাইট বুকমার্ক প্রলুব্ধ হতে পারে। কিছু ব্যবহারকারীর বুকমার্ক সিঙ্ক সরঞ্জাম ইনস্টল করা আছে, তাই পাসওয়ার্ডটি ডেলি.সি.ইউএস বা অন্য কোনও জায়গায় শেষ হতে পারে।

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

উপসংহার: এটি যখন সুরক্ষার কথা আসে, সর্বদা প্রহারের পথে নির্ভর করুন। এমন অনেক কিছুই রয়েছে যা আপনি জানেন না, ভাবেন না এবং যা আপনার ঘাড়ে ভেঙে দেবে।


3
"ব্রাউজারটি তখনও প্রক্সিটির সাথে কথা বলবে" একেবারেই সত্য নয়, এটির জন্য একটি বৈধ শংসাপত্রের সাথে ব্রাউজারটি উপস্থাপন করা দরকার যা প্রক্সি কেবল তখনই তৈরি করতে পারে যদি এটির কোনও সিএ নিয়ন্ত্রণ থাকে যদি ব্রাউজার বিশ্বস্ত করে।
পিটার


10

আমি বক্তব্যের সঙ্গে একমত না [...] HTTP রেফারার ফুটো (টার্গেট পৃষ্ঠা থেকে একটি বহিস্থিত ইমেজ পাসওয়ার্ড লিক পারে) মধ্যে Slough প্রতিক্রিয়া

এইচটিটিপি 1.1 আরএফসি স্পষ্টভাবে বলেছে :

গ্রাহকরা যদি কোনও রেফারার শিরোনাম ক্ষেত্রকে (নিরাপদ নয়) HTTP অনুরোধে অন্তর্ভুক্ত করবেন না যদি রেফারিং পৃষ্ঠাটি কোনও সুরক্ষিত প্রোটোকল সহ স্থানান্তরিত করা হয়।

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


2
আবার সেই শব্দটি 'উচিত' রয়েছে। আপনি কি নিজের পাসওয়ার্ড সহ প্রতিটি ব্রাউজারের প্রতিটি সংস্করণে বিশ্বাস করবেন?
জোব্লগগুলি

1
এটি জিইটি বনাম পোষ্টের সাথে ঠিক কীভাবে সম্পর্কিত? আপনি যদি এইচটিটিপিএস-এর উপরে পোস্ট ব্যবহার করেন তবে "প্রতিটি ব্রাউজারের প্রতিটি সংস্করণ" কি নিরাপদ থাকবে?
আর্নাউট

2
এছাড়া HTTPS দ্বারা ওয়েবপৃষ্ঠাটি একটি বহিস্থিত ইমেজ retreiving করা যেতে পারে HTTPS দ্বারা উপর - যে ক্ষেত্রে, ব্রাউজার Referer হেডার অন্তর্ভুক্ত করা উচিত, এবং এইভাবে আপনার পাসওয়ার্ড এক্সপোজ ...
ক্ষুধিত

3
@ আর্নআউট: দয়া করে এই আরএফসিটি পড়ুন যা আপনাকে যা বোঝায় তা বোঝায় না: ietf.org/rfc/rfc2119.txt এটি আবশ্যক নয়, সুতরাং যে অংশটি আপনি উদ্ধৃত করেছেন তা সত্যই রিলভেন্ট নয় এবং ব্রাউজার এজেন্টগুলি এখনও রেফারকে অন্তর্ভুক্ত করতে পারে HTTP এ।
অ্যান্ডি

8

হ্যাঁ, আপনি এইচটিটিপিএস সংযোগ স্থাপনের মুহুর্ত থেকে প্রতিটি জিনিসই সুরক্ষিত। পোষ্ট হিসাবে ক্যোরিয় স্ট্রিং (জিইটি) এসএসএল এর মাধ্যমে প্রেরণ করা হয়েছে।


-4

আপনি MD5 হ্যাশ পরম হিসাবে পাসওয়ার্ডে কিছু লবণ যুক্ত যুক্ত প্রেরণ করতে পারেন। লেখকের জন্য এটি সার্ভারের সাথে তুলনা করুন।


11
MD5 পাসওয়ার্ডের জন্য হ্যাশ ফাংশন উপযুক্ত নয়।
স্ল্যাভেক

1
হ্যাশ বা স্পষ্ট পাঠ্যে, জিইটি পরামিতিগুলির মধ্যে পাসওয়ার্ড প্রেরণ করা খারাপ অভ্যাস practice ব্যাখ্যার জন্য দয়া করে শীর্ষে ভোট দেওয়া উত্তরটি দেখুন। Aaaand ... MD5 আর কোথাও ব্যবহার করা উচিত ...
টমাস

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