Rumah > Java > teks badan

Elakkan daripada mendedahkan butiran bahagian belakang kepada pelanggan dalam but spring

王林
Lepaskan: 2024-02-22 12:28:06
ke hadapan
589 orang telah melayarinya

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.
Salin selepas log masuk

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"
}
Salin selepas log masuk

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");
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!