@ Java-välityspalvelimen salasanassa
Välitä raaka salasana PasswordAuthentication-luokalle ja käytä URL-koodausta vain varsinaisen välityspalvelimen URL-osoitteen muodostamiseen.
java.net.PasswordAuthentication vastaanottaa käyttäjänimen ja salasanan merkkitaulukon. Välitä salasanan alkuperäiset merkit:
var credential = new java.net.PasswordAuthentication(
"proxy-user", "p@ssword".toCharArray());
Arvo on havainnollistava salasana. Hanki sovelluskoodissa todelliset merkit aiotusta tunnistetietolähteestä.
Tämän salasanan sisällä oleva @ on dataa, koska salasanalla on jo oma argumenttinsa. Sen muuntaminen muotoon p%40ssword ennen konstruktoria välittää eri salasanan.
Välityspalvelimen URL-osoitteella on toinen tunnistetietojen esitys. URL-osoitteessa kuten http://proxy-user:p%[email protected]:8080 koodattu @ kuuluu käyttäjätietoihin, kun taas myöhempi @ erottaa nämä tiedot isännästä. Pura ja koodaa sen rajapinnan mukaan, joka todella kuluttaa arvon.
Shell-lainausmerkit, Java-merkkijonoliteraalien escapetus ja URL-osoitteen prosenttikoodaus ratkaisevat myös erilaisia jäsennysongelmia. Selvitä, mikä kerros lukee syötettä, sen sijaan että koodaisit tunnistetietoja toistuvasti, kunnes pyynnön käyttäytyminen muuttuu.