ข้อมูล GET ถูกเข้ารหัสใน HTTPS ด้วยหรือไม่


129

เมื่อคุณได้

https://encrypted.google.com/search?q=%s

เป็น%sแบบสอบถามเข้ารหัส? หรือเพียงแค่การตอบสนอง? หากไม่เป็นเช่นนั้นเหตุใด Google จึงควรให้บริการเนื้อหาสาธารณะด้วยการเข้ารหัสด้วย

คำตอบ:


148

คำขอทั้งหมดถูกเข้ารหัสรวมถึง URL และแม้แต่คำสั่ง ( GET) สิ่งเดียวที่ฝ่ายแทรกแซงเช่นพร็อกซีเซิร์ฟเวอร์สามารถรวบรวมได้คือที่อยู่ปลายทางและพอร์ต

อย่างไรก็ตามโปรดทราบว่าแพ็กเก็ต Client Hello ของ TLS handshake สามารถโฆษณาชื่อโดเมนแบบเต็มในรูปแบบข้อความธรรมดาผ่านส่วนขยายSNI (ขอบคุณ @hafichuk) ซึ่งเบราว์เซอร์กระแสหลักสมัยใหม่ทั้งหมดใช้งานได้แม้ว่าจะมีบางตัวในระบบปฏิบัติการรุ่นใหม่เท่านั้น

แก้ไข: (เนื่องจากสิ่งนี้ทำให้ฉันได้รับป้าย "คำตอบที่ดี" ฉันเดาว่าฉันควรจะตอบคำถามทั้งหมด ... )

การตอบกลับทั้งหมดจะถูกเข้ารหัสด้วย พร็อกซีไม่สามารถสกัดกั้นส่วนใดส่วนหนึ่งได้

Google ให้บริการค้นหาและเนื้อหาอื่น ๆ กว่า https เพราะไม่ทั้งหมดของมันเป็นที่สาธารณะและคุณอาจต้องการที่จะซ่อนบางส่วนของเนื้อหาสาธารณะจากMITM ในกรณีใด ๆ จะดีที่สุดเพื่อให้ Google คำตอบสำหรับตัวเอง


2
ฉันไม่พอใจเล็กน้อยเกี่ยวกับการอ้างว่า URL ถูกเข้ารหัส ชื่อโฮสต์ไม่ถือเป็นส่วนหนึ่งของ URL หรือไม่? ถ้าเป็นเช่นนั้นแสดงว่าข้อความนั้นไม่ถูกต้อง ไม่มีวิธีใดในการซ่อนชื่อโฮสต์ / ที่อยู่ IP จาก ISP / พร็อกซีเซิร์ฟเวอร์ในลักษณะเดียวกับที่คุณไม่สามารถซ่อนที่อยู่ปลายทางขณะส่งจดหมายจริง
Abhishek Anand

1
@Abhishek: ชื่อโฮสต์ไม่อยู่ในส่วนหัว TCP / IP ฉันครอบคลุมที่อยู่ IP ในคำตอบของฉัน
Marcelo Cantos

โดเมนไม่ได้เข้ารหัส นี่คือการสนับสนุนโฮสต์เสมือนตามชื่อ (เทียบกับตาม IP) @MarceloCantos ถูกต้องสมบูรณ์ว่าส่วนที่เหลือของ URL (เช่นGETคำสั่ง) ถูกเข้ารหัส ครอบคลุมในRFC 4366
hafichuk

@hafichuk: ขอบคุณสำหรับสิ่งนั้น ฉันไม่ทราบว่า TLS สามารถโฆษณา fqdn ได้ ครั้งสุดท้ายที่ฉันพยายามตั้งค่า https multiserver (หลายปีก่อนฉันจะยอมรับ) ดูเหมือนว่าจะเป็นไปไม่ได้บน ip เดียว
Marcelo Cantos

นอกจากนี้ที่สำคัญมากสำหรับ TLS ที่มีชื่อโดเมน: อย่าลืมคำขอ DNS ข้อความธรรมดารวมถึงชื่อโดเมนด้วย โอกาสที่คนที่สามารถเห็นการรับส่งข้อมูล HTTPS ที่เข้ารหัสของคุณก็สามารถดูคำขอ DNS ของคุณได้เช่นกัน
Tim G

65

URL นั้นถูกเข้ารหัสดังนั้นพารามิเตอร์ในสตริงการสืบค้นจึงไม่เคลื่อนที่ข้ามสาย

อย่างไรก็ตามโปรดทราบว่า URL ที่รวมถึงข้อมูล GET มักจะถูกบันทึกโดยเว็บเซิร์ฟเวอร์ในขณะที่ข้อมูล POST แทบจะไม่มี ดังนั้นหากคุณกำลังวางแผนที่จะทำสิ่งที่ชอบ/login/?username=john&password=doeก็อย่าทำ ใช้ POST แทน


2
+1 ขอบคุณ นี่เป็นเซิร์ฟเวอร์จริงของฉันเองดังนั้นฉันจึงไม่กังวลกับบันทึกมากเกินไป แต่นั่นเป็นข้อควรพิจารณาที่ดีสำหรับทุกคนที่พิจารณาเรื่องนี้ในสภาพแวดล้อมการโฮสต์ที่ใช้ร่วมกัน สิ่งสำคัญที่ต้องพิจารณาเพราะฉันจะโอนหมายเลขบัตรเครดิตด้วยวิธีนี้และจะไม่ต้องการบันทึกแน่นอน :)
orokusaki

3
มันไม่สำคัญจริงๆว่าเป็นกล่องของคุณเอง คุณไม่ต้องการให้ใครก็ตามที่เป็นเจ้าของมัน (เช่นแฮกเกอร์ชั่วร้าย) เห็นรหัสผ่านเหล่านั้นเป็นข้อความธรรมดาเช่นกัน หรือหมายเลข CC เหล่านั้น (สมมติว่าคุณไม่ได้เก็บไว้ที่อื่นด้วย)
Thomas

1
คุณควรใส่สิ่งเหล่านี้ไว้ในเนื้อหา POST ไม่ใช่สตริงการสืบค้น URL
โทมัส

1
คุณกลัวว่า wbeserver มีข้อ จำกัด ในการเข้าถึงบันทึกน้อยกว่าการเข้าถึงข้อมูลของเว็บไซต์ (DB, file, ฯลฯ ) หรือไม่? IMHO ตราบใดที่ข้อมูลเข้าถึงเว็บเซิร์ฟเวอร์อย่างปลอดภัยทุกอย่างก็ดี คนเท่านั้นที่สามารถเข้าถึงเว็บเซิร์ฟเวอร์ควรได้รับการพิจารณาว่าเชื่อถือได้เพราะหากไม่มีก็จะไม่มีทางป้องกันไม่ให้พวกเขาอ่านข้อมูลไม่ทางใดก็ทางหนึ่ง
Serge Profafilecebook

1
เมื่อรหัสผ่านถูกส่งผ่าน GET และล็อกไว้ในบันทึกการเข้าถึงจะไม่ถูกแฮช ฉันเชื่อว่านั่นเป็นปัญหาใหญ่ที่สุด การแฮชรหัสผ่านในฐานข้อมูลไม่สำคัญว่าคุณสามารถค้นหาได้ในบันทึกการเข้าถึงของเว็บเซิร์ฟเวอร์หรือไม่ ควรแฮชในฐานข้อมูลหากไม่เป็นเช่นนั้นโปรดแก้ไข
Steen Schütt

22

HTTPS สร้างการเชื่อมต่อ SSL พื้นฐานก่อนที่จะถ่ายโอนข้อมูล HTTP ใด ๆ สิ่งนี้ช่วยให้มั่นใจได้ว่าข้อมูล URL ทั้งหมด (ยกเว้นชื่อโฮสต์ซึ่งใช้ในการสร้างการเชื่อมต่อ) จะถูกดำเนินการภายในการเชื่อมต่อที่เข้ารหัสนี้เท่านั้นและได้รับการปกป้องจากการโจมตีจากคนตรงกลางในลักษณะเดียวกับข้อมูล HTTPS

ข้างต้นเป็นส่วนหนึ่งของคำตอบที่ครอบคลุมมากจาก Google Answers ซึ่งอยู่ที่นี่:

http://answers.google.com/answers/threadview/id/758002.html#answer



7

ทุกอย่างถูกเข้ารหัส แต่คุณต้องจำไว้ว่าข้อความค้นหาของคุณจะยังคงอยู่ในบันทึกของเซิร์ฟเวอร์และจะสามารถเข้าถึงได้โดยใช้เครื่องมือวิเคราะห์บันทึกต่างๆเป็นต้น (ซึ่งโดยปกติจะไม่เป็นเช่นนั้นกับคำขอ POST)


1
เซิร์ฟเวอร์ใด ใครเข้าถึงได้บ้าง
Jader Dias

2
@Jader ไปยังผู้ดูแลระบบของเซิร์ฟเวอร์นั้นอย่างน้อยและสำหรับแฮกเกอร์ ด้วยการร้องขอ POST ข้อมูลจะไม่อยู่ในบันทึกดังนั้นหากไม่มีการบันทึกไว้อย่างชัดเจนก็จะไม่มีปัญหากับบันทึก รับข้อความค้นหาจะอยู่ในบันทึกและหากเกิดอะไรขึ้นกับบันทึก (หรือผู้ดูแลระบบตัดสินใจใช้บันทึกเหล่านี้สำหรับกิจกรรมที่ไม่ดี) แสดงว่าคุณกำลังมีปัญหา
Eugene Mayevski 'Callback

5

การเชื่อมต่อได้รับการเข้ารหัสก่อนที่จะส่งคำขอ ใช่คำขอจะถูกเข้ารหัสเช่นกันรวมถึงสตริงการสืบค้น


5

ฉันเพิ่งเชื่อมต่อผ่าน HTTPS ไปยังเว็บไซต์และส่งผ่านพารามิเตอร์ GET มากมาย จากนั้นฉันใช้ Wirehark เพื่อดมกลิ่นเครือข่าย เมื่อใช้ HTTP URL จะถูกส่งโดยไม่เข้ารหัสซึ่งหมายความว่าฉันสามารถดูพารามิเตอร์ GET ทั้งหมดใน URL ได้อย่างง่ายดาย การใช้ HTTPS ทุกอย่างถูกเข้ารหัสและฉันไม่สามารถดูได้ว่าแพ็กเก็ตใดเป็นคำสั่ง GET นับประสาอะไรกับเนื้อหา!


4

ใช่มันปลอดภัย SSL เข้ารหัสทุกอย่าง

ข้อความที่ตัดตอนมาจากคำขอ POST:

POST /foo HTTP/1.1
... some other headers

ข้อความที่ตัดตอนมาจากคำขอ GET:

GET /foo?a=b HTTP/1.1
... some other headers

ในทั้งสองกรณีสิ่งที่ส่งไปบนซ็อกเก็ตจะถูกเข้ารหัส การที่ลูกค้าเห็นพารามิเตอร์ในเบราว์เซอร์ของเขาระหว่างการร้องขอ GET ไม่ได้หมายความว่าผู้ชายที่อยู่ตรงกลางจะเห็นสิ่งเดียวกัน


3

SSL เกิดขึ้นก่อนการแยกวิเคราะห์ส่วนหัวซึ่งหมายความว่า:

Client creates Request
Request gets encrypted
Encrypted request gets transmitted to the Server
Server decrypts the Request
Request gets parsed

คำขอมีลักษณะดังนี้ (จำไวยากรณ์ที่แน่นอนไม่ได้ แต่ควรใกล้เคียงพอ):

GET /search?q=qwerty HTTP/1.1
Host: www.google.de

นี่เป็นสาเหตุที่การมีใบรับรอง SSL ที่แตกต่างกันสำหรับโฮสต์หลาย ๆ โฮสต์บน IP เดียวกันจึงเป็นปัญหาไม่ทราบชื่อโฮสต์ที่ร้องขอจนกว่าจะมีการถอดรหัส


1
HTTP/1.1มาในตอนท้ายของบรรทัดแรก
Marcelo Cantos

@Marcelos Cantos: ขอบคุณเป็นเวลานานแล้วที่ฉันต้องเขียนคำขอ HTTP ด้วยมือ
Morfildur

0

คำขอ GET ถูกเข้ารหัสเมื่อใช้ HTTPS ซึ่งในความเป็นจริงนี่คือสาเหตุที่เว็บไซต์ที่ปลอดภัยจำเป็นต้องมีที่อยู่ IP ที่ไม่ซ้ำกัน - ไม่มีวิธีรับชื่อโฮสต์ที่ต้องการ (หรือไดเรกทอรีเสมือน) จากคำขอจนกว่าจะมีการถอดรหัส


JFYI: มีส่วนขยาย TLS ที่ให้ไคลเอนต์ระบุชื่อโฮสต์และเซิร์ฟเวอร์สามารถเลือกใบรับรองที่เกี่ยวข้องได้
Eugene Mayevski 'Callback

@ ยูจีน: ขอบคุณ - ฉันตระหนักถึงส่วนขยาย TLS แต่ในแง่ของการรับรู้ที่หลวมที่สุดเท่านั้น - ฉันไม่รู้รายละเอียดเลยหรือว่าการใช้งานจริง (หรืออาจจะไม่) กว้างขวางเพียงใด
Michael Burr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.