Ένα @ σε κωδικό πρόσβασης διακομιστή μεσολάβησης Java
Περάστε τον ακατέργαστο κωδικό στο PasswordAuthentication και εφαρμόστε κωδικοποίηση URL μόνο κατά την κατασκευή πραγματικού URL μεσολάβησης.
Το java.net.PasswordAuthentication δέχεται ένα όνομα χρήστη και έναν πίνακα χαρακτήρων κωδικού. Περάστε τους αρχικούς χαρακτήρες του κωδικού:
var credential = new java.net.PasswordAuthentication(
"proxy-user", "p@ssword".toCharArray());
Η τιμή είναι ένας ενδεικτικός κωδικός. Στον κώδικα της εφαρμογής, λάβετε τους πραγματικούς χαρακτήρες από την προβλεπόμενη πηγή διαπιστευτηρίων.
Ένα @ μέσα σε αυτόν τον κωδικό είναι δεδομένο, επειδή ο κωδικός έχει ήδη το δικό του όρισμα. Η μετατροπή του σε p%40ssword πριν από τον κατασκευαστή παρέχει διαφορετικό κωδικό.
Ένα URL μεσολάβησης έχει άλλη αναπαράσταση διαπιστευτηρίων. Σε ένα URL όπως http://proxy-user:p%[email protected]:8080, το κωδικοποιημένο @ ανήκει στις πληροφορίες χρήστη, ενώ το επόμενο @ διαχωρίζει αυτές τις πληροφορίες από τον κεντρικό υπολογιστή. Αποκωδικοποιήστε και κωδικοποιήστε σύμφωνα με τη διεπαφή που καταναλώνει πραγματικά την τιμή.
Η παράθεση στο κέλυφος, η διαφυγή συμβολοσειρών Java και η ποσοστιαία κωδικοποίηση URL λύνουν επίσης διαφορετικά προβλήματα ανάλυσης. Προσδιορίστε ποιο επίπεδο διαβάζει την είσοδο αντί να κωδικοποιείτε επανειλημμένα τα διαπιστευτήρια μέχρι να αλλάξει η συμπεριφορά ενός αιτήματος.