Es ist nicht besonders unsicher. Wenn Sie also nichts Kritisches in dieser Klasse verbergen möchten oder wenn die Klasse Teil eines kritischen Pfads ist (wie ein sicherer Handshake oder eine "versteckte" Funktion), würde ich dies nicht als Problem betrachten überhaupt.
Außerdem sprechen wir hier über Java. Wenn es sich also um eine clientseitige App handelt, auf der Java auf dem Client ausgeführt wird, können sie ihre JRE jederzeit so ändern, dass sie ihre eigenen Debugging-Routinen hinzufügen und / oder einen benutzerdefinierten Klassenladeprogramm verwenden und so ziemlich auf Ihre Klassen zugreifen, wie sie möchten. Es ist immer möglich, es ihnen schwerer zu machen (indem man Dinge tiefer versteckt oder sogar Code verschleiert), aber es ist normalerweise nicht kosteneffektiv, wenn man die Zeit und den Aufwand berücksichtigt, die erforderlich sind, um dies gegen den durch statistisch unwahrscheinliche Verlust verursachten Verlust zu erreichen böswillige Benutzer.
Wenn es sich um eine serverseitige Software handelt, die möglicherweise Protokolle an Clients (z. B. an den Browser des Benutzers) ausgibt, ist dies wahrscheinlich keine allzu große Sache, aber es ist bereits einfacher zu beheben: Konfigurieren Sie Ihren Container Verwenden Sie ein Protokollierungsframework oder einen Multiplexer, um stattdessen zu Debugging-Zwecken in die entsprechenden Dateien auf dem Server auszugeben. Auf diese Weise behalten Sie nützliche Datensätze für das Debuggen bei, ohne jedoch potenziell nützliche Informationen zu gefährden.
Aber im Allgemeinen wäre dies wahrscheinlich kein Problem. Es ist eher das, was Sie in die Debug-Nachricht einfügen, was ein Problem sein könnte, da wir als Entwickler häufig dazu neigen, Dinge auszugeben, an denen wir arbeiten (Sie möchten diese Debug-Ausgaben für Benutzernamen, Kennwörter, Salze und Sicherheitstoken nicht im Blick behalten ).