Score:0

"โฮสต์" ในคำขอ HTTPS ที่เข้ามามีความน่าเชื่อถือเพียงใด

ธง us

ฉันพยายามที่จะเข้าใจว่าฉันสามารถมีความมั่นใจได้ในระดับใดเมื่อ API ของฉันอยู่ที่ api.foo.com ได้รับคำขอ POST จากเพจที่มี ฟู.คอม ระบุเป็นของมัน เจ้าภาพ ค่าในส่วนหัว

กล่าวโดยเจาะจง - นี่คือสิ่งที่ปลอมแปลงได้ (หรืออาจจะปลอมง่ายด้วยซ้ำ?) หรือเป็นเรื่องยาก (เป็นไปไม่ได้?) สำหรับคนที่จะส่งบางสิ่งไปให้ api.foo.com จากตำแหน่งอื่นทั้งหมดและปลอมแปลงในส่วนหัวที่โฮสต์อยู่ ฟู.คอม?

หากไม่ใช่เรื่องยากหรือเป็นไปไม่ได้ กลไกมาตรฐานอุตสาหกรรมในการตรวจสอบว่าคำขอนั้นมาจากสถานที่ที่เชื่อถือได้คืออะไร

Score:2
ธง us

เดอะ เจ้าภาพ ส่วนหัวเป็นส่วนหนึ่งของคำขอ HTTP ที่ระบุโฮสต์เสมือนบนเว็บเซิร์ฟเวอร์ที่ร้องขอ

ไม่มีส่วนเกี่ยวข้องกับแหล่งที่มาของคำขอ ทุกคนสามารถสร้างคำขอ HTTP / HTTPS ไปยังเว็บเซิร์ฟเวอร์ของคุณและระบุ กูเกิล.คอม ใน เจ้าภาพ หัวข้อ. จากนั้นขึ้นอยู่กับเว็บเซิร์ฟเวอร์ของคุณที่จะตัดสินใจว่าต้องการทำอะไรกับคำขอ

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

ตัวอย่าง:

ผู้ใช้กำลังเยี่ยมชม http://www.example.com/example เว็บไซต์ซึ่งมีไฮเปอร์ลิงก์ไปยัง http://www.example.org. ผู้ใช้คลิกที่ลิงค์ เบราว์เซอร์ของผู้ใช้ส่งคำขอไปยังที่อยู่ IP ของ www.example.orgโดยมีส่วนหัว HTTP ต่อไปนี้:

โฮสต์: www.example.org
ผู้อ้างอิง: http://www.example.com/example

เมื่อเร็ว ๆ นี้เบราว์เซอร์ได้เริ่มตัดออก ผู้อ้างอิง เนื้อหาส่วนหัวเพื่อให้มีเฉพาะ URL รูท: http://www.example.comเมื่อมีการร้องขอข้ามโดเมน

โดยรวมแล้ว คุณไม่สามารถเชื่อถือส่วนหัวคำขอ HTTP ใด ๆ เพื่อให้มีข้อมูลตรงตามที่คุณคาดไว้ เนื่องจากเป็นอินพุตที่ไม่น่าเชื่อถือของผู้ใช้

Score:1
ธง cz

โฮสต์: ส่วนหัวคำขอ (RFC 7230 § 5.4) เป็น การป้อนข้อมูลของผู้ใช้ที่ไม่น่าเชื่อถือ. มีให้โดยตัวแทนผู้ใช้เพื่อระบุโฮสต์ (เสมือน) ที่คำขอ HTTP เกี่ยวข้อง ตัวแทนผู้ใช้ที่เป็นอันตรายสามารถเชื่อมต่อกับเซิร์ฟเวอร์ของคุณและส่งคำขอด้วยส่วนหัว Host: ที่ไม่ถูกต้อง

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

Yevgeny Simkin avatar
us flag
รอ - ดังนั้น - เว็บเซิร์ฟเวอร์ *สามารถตรวจสอบได้ว่าการโทรนั้นมาจาก foo.com จริง ๆ และไม่ใช่จากสิ่งที่ติด foo.com ไว้ที่ส่วนหัว คุณรู้หรือไม่ว่าฉันสามารถอ่านเกี่ยวกับวิธีการทำงานนี้ได้จากที่ใดและเชื่อถือได้เพียงใด หรือฉันเข้าใจคุณผิด?
Michael Hampton avatar
cz flag
นี่เป็นหนึ่งในฟังก์ชันพื้นฐานที่สุดของเว็บเซิร์ฟเวอร์ คุณเคยตั้งค่ามาก่อนหรือไม่? ดูตัวอย่าง https://nginx.org/en/docs/http/request_processing.html
user10489 avatar
nc flag
"สามารถตรวจสอบได้ว่าการโทรนั้นมาจาก foo.com จริง ๆ และไม่ใช่จากสิ่งที่ติด foo.com ไว้ที่ส่วนหัว" ฉันเชื่อว่าโฮสต์ไม่ได้อยู่ที่ *จาก* แต่เป็นที่ *ถึง*... ใน กล่าวอีกนัยหนึ่ง คำขอระยะไกลกำลังขอ foo.com ซึ่งควรเป็นหนึ่งในนามแฝงโฮสต์ของคุณ (แต่อาจไม่ใช่)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา