রিয়েলগুলিতে ফোর্স_ এসএসএল কী করে?


84

পূর্ববর্তী প্রশ্নে আমি জানতে পেরেছিলাম যে আমার এনজিনেক্স এসএসএল সমাপ্তি স্থাপন করা উচিত এবং রেলগুলি এনক্রিপ্ট করা ডেটা প্রক্রিয়া না করা উচিত।

তাহলে নিচেরটি কেন বিদ্যমান?

config.force_ssl = true

আমি প্রযোজনা কনফিগারেশন ফাইলটিতে এই মন্তব্য করা দেখুন। তবে যদি প্রত্যাশাটি থাকে যে এনগিনেক্স সমস্ত এসএসএল স্টাফ পরিচালনা করবে যাতে আমার রেল অ্যাপ্লিকেশন এনক্রিপ্ট হওয়া ডেটা নিয়ে কাজ করে না তবে কী করবে config.force_ssl = true?

আমি কী জানি যে আমি সবসময় এনজিএনএক্স ব্যবহার করব?

উত্তর:


77

এটি কেবলমাত্র আপনার ব্রাউজারকে এইচটিটিপিএসকে এইচটিটিপিএসে পুনঃনির্দেশ করতে বাধ্য করে না । এটি আপনার কুকিজকে "সুরক্ষিত" হিসাবে চিহ্নিত করার জন্যও সেট করে এবং এটি এইচএসটিএস সক্ষম করে, যার প্রত্যেকটি এসএসএল স্ট্রিপিংয়ের বিরুদ্ধে খুব ভাল সুরক্ষা দেয়।

যদিও এইচটিটিপিএস আপনার অ্যাপ্লিকেশনটিকে এমআইটিএম আক্রমণগুলির বিরুদ্ধে " https://example.com/yourapp " এ সুরক্ষা দেয় , যদি কেউ আপনার ক্লায়েন্ট এবং আপনার সার্ভারের মধ্যে থেকে যায় তবে তারা আপনাকে সহজেই " http://example.com/yourapp " দেখতে যেতে পারে । উপরের যে কোনও সুরক্ষা না দিয়ে, আপনার ব্রাউজারটি এমআইটিএম করছেন এমন ব্যক্তিকে আনন্দের সাথে সেশন কুকি প্রেরণ করবে।


4
ফোর্স_এসএল এর উত্সটিতে এই বিকল্পটি দ্বারা
এইচএসটিএস

13
@agios এটি পৃথক প্রতি নিয়ামক force_sslসম্পত্তি। force_sslকনফিগ পরিবর্তনশীল যা ইনস্টল করা, Rack::SSL, মিডলওয়্যার যা ডিফল্টভাবে HSTS সক্ষম করে
ব্রেন্ট রয়েল-গর্ডন

@ আইজিওস আপনি ভুল জায়গায় খুঁজছেন: github.com/rails/rails/blob/…
jmera

4
এটি config.force_ssl = trueডিফল্ট হওয়া উচিত বলে মনে হচ্ছে , রেল দল কেন এটি ডিফল্ট হিসাবে মন্তব্য করেছিল?
হেনরি ইয়াং

56

সেটিং config.force_sslঅন্তর্ভুক্ত ActionDispatch::SSLActionDispatch::SSLনিম্নরূপ (emphases স্বচ্ছতার জন্য যোগ করা হয়েছে) ডক্স কার্যকারিতা বর্ণনা:

অ্যাকশনডিস্প্যাচ :: এসএসএলের জন্য এখানে এবং ডকগুলি অন্তর্ভুক্ত করুন

ডকস

এই মিডওয়্যারটি স্ট্যাকটিতে যুক্ত করা হয় config.force_ssl = trueএবং সেট করা বিকল্পগুলি পাস করার পরে config.ssl_options। সুরক্ষিত HTTP অনুরোধগুলি প্রয়োগ করতে এটি তিনটি কাজ করে:

  1. টিএলএস পুনঃনির্দেশ: একই URL টি হোস্ট, পাথ ইত্যাদির মাধ্যমে https: // এ স্থায়ীভাবে HTTP: // অনুরোধগুলি পুনঃনির্দেশ করে default config.ssl_options গন্তব্য URL (যেমন redirect: { host: "secure.widgets.com", port: 8080 }) পরিবর্তন করতে সেট করুন , বা redirect: falseএই বৈশিষ্ট্যটি অক্ষম করতে সেট করুন ।

  2. সুরক্ষিত কুকিজ: ব্রাউজারগুলিকে তারা http: // অনুরোধের সাথে প্রেরণ করা উচিত নয় তা জানাতে কুকিগুলিতে পতাকা সেট করেsecure । ডিফল্টরূপে সক্ষম করা হয়েছে। সেট config.ssl_optionsসঙ্গে secure_cookies: falseএই বৈশিষ্ট্যকে অক্ষম করতে।

  3. এইচটিটিপি স্ট্রাইক ট্রান্সপোর্ট সিকিউরিটি (এইচএসটিএস): ব্রাউজারটিকে এই সাইটটিকে কেবলমাত্র টিএলএস হিসাবে মনে রাখতে এবং অ-টিএলএসবিহীন অনুরোধগুলি স্বয়ংক্রিয়ভাবে পুনর্নির্দেশ করতে বলে । ডিফল্টরূপে সক্ষম করা হয়েছে। অক্ষম করার config.ssl_optionsসাথে কনফিগার করুন hsts: false। সেট config.ssl_optionsসঙ্গে hsts: { … }কনফিগার HSTS করুন:

    • expires: কতক্ষণ, সেকেন্ডের মধ্যে, এই সেটিংসটি আটকে থাকবে। পূর্বনির্ধারিত 180.days(প্রস্তাবিত)। ব্রাউজারের প্রিলোড তালিকার জন্য যোগ্যতার জন্য প্রয়োজনীয় সর্বনিম্ন 18.weeks
    • subdomains: trueসমস্ত উপ-ডোমেনে এই সেটিংস প্রয়োগ করতে ব্রাউজারকে বলতে সেট করুন । এটি আপনার কুকিগুলিকে সাবডোমেনের একটি দুর্বল সাইট দ্বারা বাধা দেওয়া থেকে রক্ষা করে। ডিফল্ট true
    • preload: বিজ্ঞাপন দিন যে এই সাইটটি ব্রাউজারগুলির প্রিললোড হওয়া এইচএসটিএস তালিকায় অন্তর্ভুক্ত থাকতে পারে। এইচএসটিএস আপনার ওয়েবসাইটটি প্রথম দর্শন ব্যতীত প্রথম দর্শন ব্যতীত সুরক্ষা দেয় কারণ এটি আপনার এইচএসটিএস শিরোনামটি এখনও দেখেনি। এই ফাঁকটি বন্ধ করতে ব্রাউজার বিক্রেতারা এইচএসটিএস-সক্ষম সাইটগুলির বেকড-ইন তালিকা অন্তর্ভুক্ত করে। অন্তর্ভুক্তির জন্য আপনার সাইটটি জমা দিতে https://hstspreload.appspot.com এ যান । এইচএসটিএস বন্ধ করতে, শিরোনাম বাদ দেওয়া যথেষ্ট নয়। ব্রাউজারগুলি এটির মেয়াদ শেষ না হওয়া পর্যন্ত আসল এইচএসটিএস নির্দেশনা মনে রাখবে। পরিবর্তে, HSTS অবিলম্বে মেয়াদ শেষ করতে ব্রাউজারগুলিকে বলতে হেডারটি ব্যবহার করুন। সেটিংয়ের hsts: falseজন্য একটি শর্টকাট hsts: { expires: 0 }

অনুরোধগুলি এর সাথে পুনঃনির্দেশ থেকে বেরিয়ে যেতে পারে exclude:

config.ssl_options = { redirect: { exclude: -> request { request.path =~ /healthcheck/ } } }

4
"অনুরোধগুলি পুনঃনির্দেশের সাথে অপ্ট আউট করতে পারে exclude" - সতর্কতা: এই বৈশিষ্ট্যটি সম্প্রতি
পেল

4
আমি বিশ্বাস করি excludeরেল 5 এর আগে বৈশ্বিক বিকল্পগুলি দীর্ঘ সময় উপলভ্য ছিল, সুতরাং এটি কিছুটা আলাদা সিনটেক্সট: config.ssl_options = { exclude: proc { |env| env['PATH_INFO'].start_with?('/healthcheck/') } }- সার্ভারফল্ট.com
a

12

এই সেটিংটি এইচটিটিপিএসকে তাদের এইচটিটিপিএস অংশগুলিতে পুনর্নির্দেশের মাধ্যমে এইচটিটিপিএসকে জোর করে। সুতরাং পরিদর্শন করা কোনও ব্রাউজার এতে http://domain.com/pathপুনঃনির্দেশিত হবে https://domain.com/path

মন্তব্য করা সেটিংটি ছেড়ে যাওয়া উভয় প্রোটোকলের অনুমতি দেয়।

এইচটিটিপিএস অনুরোধগুলি পরিচালনা করতে আপনাকে এখনও আপনার ওয়েব সার্ভারটি কনফিগার করতে হবে।


4
তবে আপনি যদি এনজিএনএক্স স্তরে এইচটিটিপিএস সক্ষম করেন (এর মাধ্যমে এইচটিটিপিএসে সমস্ত কিছু পুনর্নির্দেশের মাধ্যমে redirect 301 https:...), তবে config.force_ssl = trueকি সমস্ত কিছু https এর মধ্য দিয়ে যাবেনা, এভাবে আসলে কিছুই করা হবে না (যেহেতু কিছুই কখনও এইচপিএস হবে না)? নাকি এখানে কি আরও গভীর সুরক্ষার কারণ আছে?
ত্রিস্তান টাও

4
@ ত্রিস্তানতাও হ্যাঁ, এটি ঠিক কাজ করবে। তবে তারপরেও, আমি সক্ষমটিকে ছেড়ে চলে যাব config.force_ssl, যদি কেউ ওয়েব সার্ভারের কনফিগারেশন থেকে পুনর্নির্দেশটি সরিয়ে ফেলছে।
স্টিফান

4
সাবধান থাকুন, অধিবেশন হাইজ্যাকের বিরুদ্ধে কুকিজ সুরক্ষার ক্ষেত্রে কনফিগারারে কনফার.ফোর্স_এসএসএল এর চেয়ে কিছুটা আলাদা: eq8.eu/blogs/…
সমমান

4
এছাড়াও লক্ষ করুন, উভয়ই থাকায় config.force_sslএবং এর add_header Strict-Transport-Security max-age=...;ফলে 2 টি Strict-Transport-Securityশিরোনাম হবে
ভিক্টর ইভানোভ

4

এটি সার্ভারের সাথে সমস্ত যোগাযোগকে এনক্রিপ্ট করতে বাধ্য করে এবং এসএসএল, অর্থাৎ এইচটিটিপিএসের মাধ্যমে ব্যবহার করে।

আপনি যখন এটিকে কোনও নিয়ামক হিসাবে অন্তর্ভুক্ত করেন তখন নিয়ামক কেবল এইচটিটিপিএস অনুরোধ গ্রহণ করবেন।

সাহা্য্যকারী লিংক:

  1. http://api.rubyonrails.org/class/ActionController/ForceSSL/ClassMethods.html
  2. http://rubydoc.info/docs/rails/ActionController/ForceSSL
  3. http://railscasts.com/episodes/270-authentication-in-rails-3-1?view=comments
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.