API ส่งคืนข้อยกเว้น Java ปลอดภัย?
ฉันแค่อยากถามว่าข้อกังวลของฉันตรงนี้ถูกต้องหรือไม่
ฉันทราบว่าไม่ปลอดภัยสำหรับ API ที่จะส่งคืนสแต็กแทร็ก ฉันมีสถานการณ์ที่คล้ายกัน แต่ร้ายแรงน้อยกว่าที่ฉันกำลังพยายามตัดสิน
นอกจากนี้ยังมีมาตรฐานบางประการเกี่ยวกับการบรรจุข้อยกเว้นจาวาในการตอบสนอง 500 หรือไม่? ตัวอย่างเช่นการส่งสิ่งต่างๆกลับไปเช่น "DataIntegrityViolationException" "NullPointerException" เป็นต้น แต่ไม่มีการติดตามสแต็ก
อีกนัยหนึ่งเมื่อเกิดข้อยกเว้นที่ไม่สามารถจัดการได้ชื่อข้อยกเว้นจะถูกส่งกลับในการตอบกลับ 500 ไม่มีการติดตามสแต็ก แต่เราสามารถอนุมานทางฝั่งไคลเอ็นต์ได้เช่นหากคำร้องขอพยายามแก้ไขฐานข้อมูลด้วยวิธีที่ไม่ถูกต้อง
ฉันกำลังเตือนทีมของฉันเกี่ยวกับเรื่องนี้และบอกพวกเขาว่าพวกเขาควร "อนุญาตพิเศษ" การตอบกลับเซิร์ฟเวอร์ของพวกเขา (กล่าวคือส่งเนื้อหาเฉพาะเมื่อคุณมีเหตุผลที่เหมาะสมในการทำเช่นนั้น) ฉันแค่อยากรู้ว่าฉันเสียเวลากับเรื่องนี้หรือเปล่า
นี่เป็นความคิดที่ดีหรือไม่?
หรือควรจะทั่วไปกว่านี้?
คำตอบ
มาตรฐานในการจัดการข้อผิดพลาดให้กับลูกค้าคือการไม่เปิดเผยอะไรเกี่ยวกับการทำงานภายในและให้เฉพาะสิ่งที่เป็นประโยชน์สำหรับผู้ใช้ที่จะประสบความสำเร็จ
เนื้อหาข้อความแสดงข้อผิดพลาด Java ไม่ได้ช่วยอะไรผู้ใช้ สิ่งที่คุณทำคือการเปิดเผยตรรกะรหัสของคุณซึ่งผู้ใช้ที่เป็นอันตรายสามารถนำมาใช้กับคุณได้
ตัวอย่างของ OWASPมีไว้เพื่อระบุว่ามีข้อผิดพลาด และนั่นคือมาตรฐาน ข้อมูลใด ๆ ที่นอกเหนือจากนี้จำเป็นต้องมีเหตุผล