סימן @ בסיסמת פרוקסי של Java
העבירו את הסיסמה הגולמית ל-PasswordAuthentication והחילו קידוד URL רק בעת בניית כתובת URL אמיתית של פרוקסי.
java.net.PasswordAuthentication מקבל שם משתמש ומערך תווים של סיסמה. העבירו את תווי הסיסמה המקוריים:
var credential = new java.net.PasswordAuthentication(
"proxy-user", "p@ssword".toCharArray());
הערך הוא סיסמה להמחשה. בקוד היישום, השגו את התווים האמיתיים ממקור ההרשאות המיועד.
סימן @ בתוך הסיסמה הזו הוא נתון, מפני שלסיסמה כבר יש ארגומנט משלה. המרתו ל-p%40ssword לפני הבנאי מספקת סיסמה אחרת.
לכתובת URL של פרוקסי יש ייצוג אחר של הרשאות. בכתובת כמו http://proxy-user:p%[email protected]:8080, ה-@ המקודד שייך לפרטי המשתמש, ואילו ה-@ המאוחר מפריד את הפרטים האלה מהמארח. פענחו וקודדו לפי הממשק שצורך את הערך בפועל.
מרכאות ב-shell, בריחת מחרוזות ב-Java וקידוד אחוזים ב-URL פותרים גם הם בעיות ניתוח שונות. קבעו איזו שכבה קוראת את הקלט במקום לקודד את ההרשאות שוב ושוב עד שהתנהגות הבקשה משתנה.