سؤال

هل جميع عناوين URL مشفرة عند استخدام تشفير TLS/SSL (HTTPS)؟ أود أن أعرف لأنني أريد إخفاء جميع بيانات URL عند استخدام TLS/SSL (HTTPS).

إذا كان TLS/SSL يمنحك تشفير URL الكلي ، فلا داعي للقلق بشأن إخفاء المعلومات السرية من عناوين URL.

هل كانت مفيدة؟

المحلول

نعم ، يكون اتصال SSL بين طبقة TCP وطبقة HTTP. يقوم العميل والخادم أولاً بإنشاء اتصال TCP مشفر آمن (عبر بروتوكول SSL/TLS) وبعد ذلك سيرسل العميل طلب HTTP (الحصول ، بعد ، حذف ...) على اتصال TCP المشفر.

نصائح أخرى

نظرًا لأن أحداً لم يوفر التقاط الأسلاك ، فإليك واحد.
اسم الخادم (يتم تقديم جزء المجال من عنوان URL) في ClientHello حزمة ، في نص عادي.

ما يلي يظهر طلب المتصفح إلى:
https://i.stack.imgur.com/path/?some=parameters&go=here

ClientHello SNI انظر هذا الإجابة لمعرفة المزيد عن حقول إصدار TLS (هناك 3 منها - وليس الإصدارات ، الحقول التي تحتوي كل منها على رقم إصدار!)

من https://www.ietf.org/rfc/rfc3546.txt:

3.1. مؤشر اسم الخادم

TLS] لا يوفر آلية للعميل لإخبار الخادم باسم الخادم الذي يتصل به. قد يكون من المرغوب فيه للعملاء توفير هذه المعلومات لتسهيل الاتصالات الآمنة للخوادم التي تستضيف خوادم "افتراضية" متعددة في عنوان شبكة أساسي واحد.

من أجل توفير اسم الخادم ، قد يتضمن العملاء امتدادًا لنوع "server_name" في العميل (الموسع) Hello.


بالمختصر:

  • FQDN (جزء المجال من عنوان URL) مايو ينتقل واضح داخل ClientHello الحزمة إذا تم استخدام امتداد SNI

  • بقية عنوان URL (/path/?some=parameters&go=here) ليس لديه عمل في الداخل ClientHello نظرًا لأن عنوان URL للطلب هو شيء HTTP (OSI Layer 7) ، فلن يظهر أبدًا في مصافحة TLS (الطبقة 4 أو 5). سوف يأتي لاحقًا في أ GET /path/?some=parameters&go=here HTTP/1.1 طلب HTTP ، بعد، بعدما ال يؤمن تم إنشاء قناة TLS.


ملخص تنفيذي

قد يتم إرسال اسم المجال في واضح (إذا تم استخدام امتداد SNI في مصافحة TLS) ولكن يتم تشفير URL (المسار والمعلمات) دائمًا.


تحديث مارس 2019

شكرًا لك كارلين لرفع هذا واحد.

يمكن الآن تشفير الحمولة النافعة في امتداد SNI عبر هذا مشروع اقتراح RFC. هذه الإمكانية موجودة فقط في TLS 1.3 (كخيار ويعود الأمر إلى كلا الطرفين لتنفيذها) ولا يوجد توافق مع الورق مع TLS 1.2 أو أدناه.

تقوم Cloudflare بذلك ويمكنك قراءة المزيد عن الأجزاء الداخلية هنا -إذا كان يجب أن يأتي الدجاج قبل البيض ، فأين تضع الدجاج؟

في الممارسة العملية ، هذا يعني أنه بدلاً من إرسال FQDN في نص عادي (مثل عروض التقاط Wireshark) ، تم تشفيرها الآن.

ملاحظة: هذا يعالج جانب الخصوصية أكثر من جهاز الأمان لأن البحث العكسي DNS قد يكشف عن مضيف الوجهة المقصود على أي حال.

كما آخر إجابات لقد أشرت بالفعل ، حيث تم تشفير "urls" https بالفعل. ومع ذلك ، فإن طلب/استجابة DNS لديك عند حل اسم المجال ربما لا يكون ، وبالطبع ، إذا كنت تستخدم متصفحًا ، فقد يتم تسجيل عنوان URL الخاص بك أيضًا.

يتم تشفير الطلب والاستجابة بالكامل ، بما في ذلك URL.

لاحظ أنه عند استخدام وكيل HTTP ، فإنه يعرف العنوان (المجال) للخادم المستهدف ، ولكنه لا يعرف المسار المطلوب على هذا الخادم (أي طلب واستجابة يتم تشفيرها دائمًا).

أتفق مع الإجابات السابقة:

أن تكون صريحًا:

مع TLS ، الجزء الأول من عنوان URL (https://www.example.com/) لا يزال مرئيا لأنه يبني الاتصال. الجزء الثاني (/herearemygetParameters/1/2/3/4) محمية بواسطة TLS.

ومع ذلك ، هناك عدد من الأسباب التي تجعلك لا يجب أن تضع المعلمات في طلب GET.

أولاً ، كما ذكرنا سابقًا من قبل الآخرين: - تسرب عبر شريط عنوان المتصفح - التسرب عبر التاريخ

بالإضافة إلى ذلك ، لديك تسرب من عنوان URL من خلال مرجع HTTP: يرى المستخدم الموقع A على TLS ، ثم ينقر على رابط إلى الموقع B. إذا كان كلا الموقعين على TLS ، فإن الطلب إلى الموقع B سيحتوي على عنوان URL بالكامل من الموقع المعلمة المرجع للطلب. ويمكن للمسؤول من الموقع B استرداده من ملفات سجل الخادم B.)

إضافة إلى الإجابة المفيدة من Marc Novakowski - يتم تخزين عنوان URL في السجلات على الخادم (على سبيل المثال ، في/etc/httpd/logs/ssl_access_log) ، لذلك إذا كنت لا تريد أن يحافظ الخادم على المعلومات على المدة الطول مصطلح ، لا تضعه في عنوان URL.

نعم و لا.

لا يتم تشفير جزء عنوان الخادم لأنه يتم استخدامه لإعداد الاتصال.

قد يتغير هذا في المستقبل مع SNI و DNS المشفرة ولكن اعتبارًا من عام 2018 ، لا يتم استخدام كلتا التقنيتين بشكل شائع.

المسار ، سلسلة الاستعلام وما إلى ذلك مشفرة.

ملاحظة للحصول على طلبات ، سيظل المستخدم قادرًا على قطع عنوان URL ولصقه خارج شريط الموقع ، وربما لا ترغب في وضع معلومات سرية يمكن رؤيتها من قبل أي شخص ينظر إلى الشاشة.

قد تتمكن الطرف الثالث الذي يراقب حركة المرور أيضًا من تحديد الصفحة التي تمت زيارتها عن طريق فحص حركة المرور الخاصة بك بمقارنتها مع حركة المرور التي لدى المستخدم الآخر عند زيارة الموقع. على سبيل المثال ، إذا كان هناك صفحتان فقط على موقع ما ، واحدة أكبر بكثير من الآخر ، فإن مقارنة حجم نقل البيانات ستعرف الصفحة التي قمت بزيارتها. هناك طرق يمكن إخفاء هذا من الطرف الثالث ، لكنها ليست سلوك خادم أو متصفح عادي. انظر على سبيل المثال هذه الورقة من Scirate ، https://scirate.com/arxiv/1403.0297.

بشكل عام ، تكون الإجابات الأخرى صحيحة ، على الرغم من أن هذه الورقة توضح أنه يمكن تحديد الصفحات التي تمت زيارتها (IE URL) بشكل فعال تمامًا.

الارتباط بإجابتي على سؤال مكرر. لا يتوفر عنوان URL في تاريخ المتصفحات فحسب ، بل يسجل جانب الخادم ولكنه يتم إرساله أيضًا كرئيس لـ HTTP Pensive والذي إذا كنت تستخدم محتوى الطرف الثالث ، فإن عنوان URL لمصادر خارج نطاق سيطرتك.

لا يمكنك دائمًا الاعتماد على خصوصية عنوان URL الكامل أيضًا. على سبيل المثال ، كما هو الحال في بعض الأحيان على شبكات المؤسسات ، يتم تكوين الأجهزة المقدمة مثل جهاز الكمبيوتر الخاص بك بشهادة الجذر "الموثوق" الإضافية بحيث يمكن للمتصفح الوثوق بهدوء فحص الوكيل (Man-in-Middle) لحركة HTTPS . هذا يعني أن عنوان URL الكامل يتعرض للتفتيش. وعادة ما يتم حفظ هذا إلى سجل.

علاوة على ذلك ، تتعرض كلمات المرور الخاصة بك أيضًا وربما تم تسجيلها وهذا سبب آخر للاستخدام كلمات مرور لمرة واحدة أو لتغيير كلمات المرور الخاصة بك بشكل متكرر.

أخيرًا ، يتعرض محتوى الطلب والاستجابة أيضًا إن لم يكن مشفرًا.

تم وصف مثال واحد على إعداد التفتيش بواسطة نقطة التفتيش هنا. قد يتم أيضًا إعداد "مقهى الإنترنت" القديم باستخدام الكمبيوتر المرفق بهذه الطريقة.

هو الآن 2019 وتم إصدار TLS V1.3. وفقًا لـ CloudFlare ، يمكن تشفير SNI بفضل TLS V1.3. لذلك ، قلت لنفسي عظيم! دعنا نرى كيف تبدو ضمن حزم TCP في CloudFlare.com ، لذا ، اكتشفت حزمة مصافحة "عميل Hello" من استجابة لخادم CloudFlare باستخدام Google Chrome كمتصفح و Wireshark كحزمة Sniffer. لا يزال بإمكاني قراءة اسم الخادم في نص عادي داخل حزمة Hello Client.

enter image description here

لذا ، احذر من ما يمكنك قراءته لأن هذا لا يزال ليس اتصالًا مجهولًا لأن الوسيط يمكنه رؤية اسم الخادم الهدف.

لذلك يبدو أن تشفير SNI يتطلب تطبيقات إضافية للعمل مع TLSV1.3

تصف المقالة التالية تشفير SNI المقدمة من CloudFlare كجزء من TLSV1.3. ومع ذلك ، فإن جميع عناوين URL HTTPS من CloudFlare.com في نص عادي داخل حزمة TCP ضمن TLS V1.3

[https://blog.cloudflare.com/encrypted-sni//2012

على الرغم من أن هناك بعض الإجابات الجيدة بالفعل هنا ، فإن معظمها يركز في الملاحة المتصفح. أنا أكتب هذا في عام 2018 وربما يريد شخص ما أن يعرفه عن أمان تطبيقات الهاتف المحمول.

لتطبيقات الهاتف المحمول, ، إذا كنت تتحكم في طرفي التطبيق (الخادم والتطبيق) ، طالما أنك تستخدم HTTPS أنت آمن. سوف يتحقق iOS أو Android من الشهادة وتخفيف هجمات MIM المحتملة (ستكون هذه هي النقطة الضعيفة الوحيدة في كل هذا). يمكنك إرسال بيانات حساسة من خلال اتصالات HTTPS التي سيتم تشفيرها أثناء النقل. فقط التطبيق الخاص بك وسيعرف الخادم أي معلمات يتم إرسالها من خلال HTTPS.

سيكون "ربما" الوحيد هنا إذا كان العميل أو الخادم مصابًا ببرامج ضارة يمكنها رؤية البيانات قبل أن يتم لفها في HTTPS. ولكن إذا كان شخص ما مصابًا بهذا النوع من البرامج ، فسيكون بإمكانه الوصول إلى البيانات ، بغض النظر عن ما تستخدمه لنقله.

بالإضافة إلى ذلك ، إذا كنت تقوم ببناء واجهة برمجة التطبيقات (API) المريحة ، فإن مشكلات تسرب المتصفح ومشكلات مرجع HTTP يتم تخفيفها في الغالب لأن العميل قد لا يكون متصفحًا وقد لا يكون لديك أشخاص ينقرون على الروابط.

إذا كان هذا هو الحال ، فإنني أوصي بتسجيل الدخول OAUTH2 للحصول على رمز حامل. في هذه الحالة ، ستكون البيانات الحساسة الوحيدة هي بيانات الاعتماد الأولية ... والتي ربما تكون في طلب نشر على أي حال

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top