บันทึก:
ผู้คนจำนวนมากดูเหมือนจะสับสน URL "ส่วนตัว" กับการตรวจสอบ นอกจากนี้ยังมีความสับสนว่าการส่งลิงค์ผ่านเอนทิตีที่เชื่อถือได้นั้นเป็นความพยายามในการตรวจสอบสิทธิ์แบบสองปัจจัย เพื่อความชัดเจนเรากำลังพูดถึงทรัพยากรที่สาธารณชนสามารถเข้าถึงได้แม้ว่าจะเป็นทรัพยากรที่คาดเดาได้ยาก
เมื่อใช้ URL ส่วนตัวคุณควรสมมติว่าสามารถถูกโจมตีได้เสมอ - คุณควรออกแบบ URL ดังกล่าวเพื่อให้เป็นอันตรายแม้ว่าทรัพยากรจะไม่รั่วไหลข้อมูลไปยังผู้โจมตี
URL ส่วนตัว / ยากที่จะเดาไม่เท่ากับการตรวจสอบด้วยรหัสผ่าน ตามธรรมชาติแล้ว URL ส่วนบุคคลไม่ได้เป็นส่วนตัวเลย - เป็นแหล่งข้อมูลที่สาธารณชนสามารถเข้าถึงได้ ฉันคิดว่า URL "ส่วนตัว" เป็นชื่อเรียกที่ไม่ถูกต้องแทนที่จะเป็น URL "คลุมเครือ"
มีบางกรณีที่การใช้ URL "ส่วนตัว" เป็นที่ยอมรับ แต่โดยทั่วไปแล้วจะปลอดภัยน้อยกว่าวิธีการตรวจสอบสิทธิ์แบบดั้งเดิมเช่นการตรวจสอบรหัสผ่านหรือการตรวจสอบความถูกต้องด้วยรหัส
สถานที่บางแห่งที่ฉันเคยเห็น URL "ส่วนตัว" ที่ใช้โดยทั่วไปคือ:
- รีเซ็ตรหัสผ่านอีเมล
- อีเมลการสร้างใบรับรอง
- อีเมลยืนยันบัญชี / อีเมล
- การส่งเนื้อหาที่ซื้อ (ebooks ฯลฯ )
- สิ่งอื่น ๆ เช่นการเช็คอินเที่ยวบินพิมพ์บอร์ดดิ้งพาสใช้ URL ส่วนตัวนอกเหนือจากการตรวจสอบสิทธิ์แบบเดิม
สิ่งที่พบเห็นได้ทั่วไปคือ URL แบบสุ่มนั้นดีสำหรับการดำเนินการแบบครั้งเดียวเท่านั้น นอกจากนี้การรับรองความถูกต้องแบบดั้งเดิมและ URL แบบสุ่มไม่ได้เป็นเอกสิทธิ์เฉพาะบุคคลร่วมกันแน่นอนพวกเขาสามารถใช้ร่วมกันเพื่อให้ความปลอดภัยเพิ่มเติมเมื่อส่งมอบทรัพยากร
วิธีที่โรเบิร์ตฮาร์วีย์ชี้ให้เห็นวิธีเดียวที่จะใช้ URL แบบสุ่ม / ส่วนตัวอย่างปลอดภัยคือการสร้างหน้าเว็บแบบไดนามิกและส่ง URL ไปยังผู้ใช้ในลักษณะที่ผู้ใช้สามารถได้รับการรับรองความถูกต้องกึ่งจริง นี่อาจเป็นอีเมล SMS และอื่น ๆ
โดยทั่วไปแล้ว URL ที่สร้างขึ้นแบบสุ่มจะมีคุณสมบัติอยู่สองสามประการ:
- ควรหมดอายุหลังจากระยะเวลาที่เหมาะสม
- ควรเป็น URL แบบใช้ครั้งเดียว: IE ควรหมดอายุหลังจากมีการเข้าถึงครั้งแรก
- ควรเลื่อนการตรวจสอบสิทธิ์ของผู้ใช้ไปยังเอนทิตีอื่น ๆ ที่เชื่อถือได้เพื่อรับรองความถูกต้องของผู้ใช้อย่างปลอดภัย (โดยการส่งลิงค์ผ่านอีเมลหรือ SMS ฯลฯ )
- มันเป็นไปไม่ได้ที่คอมพิวเตอร์สมัยใหม่จะบังคับให้เดรัจฉาน URL ในกรอบเวลาก่อนวันหมดอายุ - ไม่ว่าจะโดยการ จำกัด อัตรา API ที่เปิดเผยทรัพยากรหรือโดยการสร้าง url endpoint ที่มีเอนโทรปีเพียงพอที่ไม่สามารถเดาได้
- ไม่ควรรั่วไหลข้อมูลเกี่ยวกับผู้ใช้ IE: หากหน้านี้เป็นการตั้งรหัสผ่านใหม่: หน้านั้นไม่ควรแสดงข้อมูลบัญชีผู้ร้องขอ หากอลิซร้องขอลิงค์รีเซ็ตรหัสผ่านและบ๊อบเดา URL อย่างใดบ๊อบไม่ควรรู้ว่าเขากำลังรีเซ็ตรหัสผ่านใด
- หากมีการรั่วไหลของข้อมูลเกี่ยวกับผู้ใช้ควรใช้การตรวจสอบแบบดั้งเดิมเช่นหน้าอาจพิจารณาผู้ใช้รับรองความถูกต้องหากพวกเขามีชุดคุกกี้หรือหาก session_id ของพวกเขายังคงถูกต้อง
ทรัพยากรที่แตกต่างกันต้องการระดับความปลอดภัยที่แตกต่างกัน หากคุณต้องการแบ่งปันสูตรลับกับเพื่อนบางคนตัวอย่างเช่นคุณสามารถใช้ URL สุ่ม / ส่วนตัวเพื่อแชร์กับพวกเขาได้ อย่างไรก็ตามหากสามารถใช้ทรัพยากรเพื่อขโมยข้อมูลประจำตัวของใครบางคนหรือประนีประนอมบัญชีของพวกเขากับผู้ให้บริการรายอื่นคุณน่าจะสนใจมากขึ้นเกี่ยวกับการ จำกัด การเข้าถึงทรัพยากรนั้น