พื้นหลัง:
ฉันออกแบบชุดรูปแบบการตรวจสอบสิทธิ์สำหรับเว็บเซอร์วิส REST สิ่งนี้ไม่จำเป็นต้อง "ปลอดภัย" จริง ๆ (เป็นโครงการส่วนตัวมากกว่า) แต่ฉันต้องการทำให้ปลอดภัยที่สุดเท่าที่จะเป็นได้จากการออกกำลังกาย / ประสบการณ์การเรียนรู้ ฉันไม่ต้องการใช้ SSL เนื่องจากฉันไม่ต้องการความยุ่งยากและค่าใช้จ่ายส่วนใหญ่ในการตั้งค่า
คำถาม SO เหล่านี้มีประโยชน์อย่างยิ่งที่จะให้ฉันเริ่มต้น:
- รับรองความถูกต้องสงบ
- แนวทางปฏิบัติที่ดีที่สุดสำหรับการรักษาความปลอดภัย REST API / บริการบนเว็บ
- ตัวอย่าง SOAP / REST / RPC web API ที่ดีที่สุด? และทำไมคุณถึงชอบพวกเขา และมีอะไรผิดปกติกับพวกเขา?
ฉันกำลังคิดที่จะใช้การรับรองความถูกต้องของAmazon S3แบบง่าย(ฉันชอบOAuthแต่ดูเหมือนซับซ้อนเกินไปสำหรับความต้องการของฉัน) ฉันกำลังเพิ่มnonce ที่สร้างแบบสุ่มซึ่งจัดหาโดยเซิร์ฟเวอร์ให้กับคำขอเพื่อป้องกันการโจมตีซ้ำ
ในการรับคำถาม:
ทั้ง S3 และ OAuth พึ่งพาการลงชื่อ URL คำขอพร้อมกับส่วนหัวที่เลือกไม่กี่รายการ ทั้งคู่ไม่ได้ลงนามในเนื้อความคำขอสำหรับคำขอ POST หรือ PUT นี่ไม่ใช่ความเสี่ยงที่จะเกิดการโจมตีจากคนกลางซึ่งจะคอยดูแล url และส่วนหัวและแทนที่เนื้อหาที่ร้องขอด้วยข้อมูลใด ๆ ที่ผู้โจมตีต้องการ
ดูเหมือนว่าฉันจะสามารถป้องกันสิ่งนี้ได้โดยการรวมแฮชของเนื้อหาคำร้องขอในสตริงที่ลงนาม ปลอดภัยไหม