4
MVC / REST ควรส่งคืน 403 หรือ 404 สำหรับทรัพยากรที่เป็นของผู้ใช้รายอื่นหรือไม่
เมื่อทำงานกับไซต์ที่ใช้ทรัพยากร (เช่นแอปพลิเคชัน MVC หรือบริการ REST) เรามีสองตัวเลือกหลักเมื่อไคลเอ็นต์พยายามเข้าถึงGETทรัพยากรที่พวกเขาไม่สามารถเข้าถึง: 403ซึ่งบอกว่าลูกค้าไม่ได้รับอนุญาต ; หรือ 404ซึ่งบอกว่าไม่มีทรัพยากร(หรือไม่สามารถหาได้) ภูมิปัญญาทั่วไปและการปฏิบัติทั่วไปดูเหมือนว่าจะตอบสนองกับความจริง - นั่นคือ 403 แต่ฉันสงสัยว่านี่เป็นสิ่งที่ถูกต้องหรือไม่ ระบบการเข้าสู่ระบบที่ปลอดภัยไม่เคยบอกเหตุผลที่ทำให้การล็อกอินล้มเหลว กล่าวคือตราบใดที่ลูกค้ามีความกังวลไม่มีความแตกต่างที่ตรวจพบได้ระหว่างชื่อผู้ใช้ที่ไม่มีอยู่และรหัสผ่านที่ไม่ถูกต้อง วัตถุประสงค์คือเพื่อไม่ให้ ID ผู้ใช้ - หรือที่แย่กว่านั้นคือที่อยู่อีเมล - ค้นพบได้ จากมุมมองความเป็นส่วนตัวดูเหมือนว่าปลอดภัยกว่าที่จะคืนค่า 404 ฉันนึกถึงเหตุการณ์ที่มีคนรายงานว่ามีผู้ชนะรายการเรียลลิตี้โชว์ (ผู้รอดชีวิตฉันคิดว่า) โดยดูว่าทรัพยากรใดไม่มีอยู่ใน ไซต์กับสิ่งที่ทำ ฉันกังวลเกี่ยวกับ 403 ที่อาจให้ข้อมูลที่ละเอียดอ่อนเช่นหมายเลขผลิตภัณฑ์หรือหมายเลขบัญชี มีเหตุผลที่น่าสนใจที่จะไม่ส่งคืน 404 หรือไม่? นโยบาย 404 อาจมีผลข้างเคียงเชิงลบหรือไม่ ถ้าไม่เป็นเช่นนั้นทำไมการปฏิบัติจึงไม่เป็นเรื่องปกติ