Rumah >Java >Elakkan daripada mendedahkan butiran bahagian belakang kepada pelanggan dalam but spring

Elakkan daripada mendedahkan butiran bahagian belakang kepada pelanggan dalam but spring

王林
王林ke hadapan
2024-02-22 12:28:06639semak imbas

Baru-baru ini, editor PHP Xigua membawakan anda artikel Soal Jawab tentang Java, memfokuskan pada cara mengelak daripada mendedahkan butiran bahagian belakang kepada pelanggan dalam spring-boot. Semasa proses pembangunan, cara mengendalikan maklumat sensitif seperti maklumat pengecualian dan gesaan ralat untuk mengelakkan kebocoran data sensitif adalah salah satu isu yang perlu diberi tumpuan oleh pembangun. Artikel ini akan menjawab soalan ini untuk anda dan membantu anda melindungi keselamatan aplikasi anda dengan lebih baik.

Kandungan soalan

Apabila menghadapi titik akhir spring-boot yang tidak betul/tidak wujud. Butiran kelas peringkat kod didedahkan. Ini mungkin dibenderakan sebagai isu keselamatan.

Contoh

Permintaan

localhost:8500/api/1.0/service/../msc -> this is a bad formatted endpoint, which does not exist.

Respon

{
    "timestamp": "2024-01-31t08:33:44.321+0000",
    "status": 400,
    "error": "bad request",
    "message": "failed to find lookuppath '/api/1.0/msc' within requesturi '/api/1.0/service/../msc'. this could be because the path has invalid encoded characters or isn't normalized.; nested exception is org.springframework.web.servlet.resource.resourceurlencodingfilter$lookuppathindexexception: failed to find lookuppath '/api/1.0/msc' within requesturi '/api/1.0/service/../msc'. this could be because the path has invalid encoded characters or isn't normalized.",
    "path": "/api/1.0/service/../msc"
}

Hanya melihat pada mesej ralat, kami dapat mengetahui bahawa terdapat aplikasi spring-boot berjalan di latar belakang, yang boleh menjadi kelemahan kerana butiran tahap kod didedahkan dalam mesej.

Bagaimanakah kami boleh menghantar mesej generik kepada pelanggan dan bukannya keseluruhan butiran pengecualian?

Saya juga cuba menggunakan @controlleradvice tetapi pengecualian tidak terperangkap di dalamnya. Nampaknya masalah itu berlaku sebelum ia sampai kepada pengawal itu sendiri.

@ExceptionHandler(Exception.class)
public ResponseEntity handleException(Exception ex) {
log.error("Exception in flow", ex);
ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal Server Error");
}

Penyelesaian

Anda boleh menggunakan gabungan kaedah untuk mengendalikan pengecualian dan tidak membocorkannya, lihat https://www.php.cn/link/41fa3925a7ec42ce029c43d6676e4b2c untuk menyemak pelbagai jenis pengendali.

Atas ialah kandungan terperinci Elakkan daripada mendedahkan butiran bahagian belakang kepada pelanggan dalam but spring. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam