From e561ae7fd819a33b9410934abed4b3c76448a921 Mon Sep 17 00:00:00 2001 From: whit3rabbit Date: Fri, 27 Mar 2026 15:08:39 -0500 Subject: [PATCH 1/4] feat(admin-ui): replace localStorage+prompt with sessionStorage+login form Stops the admin token from persisting across browser sessions (XSS exfiltration window reduced) and replaces the phishable window.prompt with a proper password-masked login form. Token is validated against GET /admin/api/metrics before being stored; invalid tokens show an inline error message. URL query param token cleanup removed since that path no longer exists. Co-Authored-By: Claude Sonnet 4.6 --- crates/proxy/admin-ui/index.html | 55 +++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/crates/proxy/admin-ui/index.html b/crates/proxy/admin-ui/index.html index 58ca2db..a6e4d7c 100644 --- a/crates/proxy/admin-ui/index.html +++ b/crates/proxy/admin-ui/index.html @@ -52,9 +52,27 @@ input:focus,select:focus{outline:none;border-color:#4a9eff} .error{color:#f85149} .empty{text-align:center;padding:40px;color:#8b949e} .pagination{display:flex;gap:8px;margin-top:12px;align-items:center} +/* Login overlay */ +.login-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#0d1117;display:flex;align-items:center;justify-content:center;z-index:1000} +.login-card{background:#161b22;border:1px solid #30363d;border-radius:8px;padding:32px;width:320px} +.login-title{font-size:18px;font-weight:600;margin-bottom:24px;text-align:center;color:#c9d1d9} +.login-card input[type="password"]{width:100%;padding:8px 12px;margin-bottom:12px;font-size:14px;background:#0d1117;border:1px solid #30363d;color:#c9d1d9;border-radius:4px} +.login-card input[type="password"]:focus{outline:none;border-color:#4a9eff} +.login-card .btn{width:100%;padding:10px;font-size:14px} +.login-error{color:#f85149;font-size:12px;margin-top:8px;min-height:16px} + @@ -90,9 +110,15 @@ input:focus,select:focus{outline:none;border-color:#4a9eff}
Total Requests
0
- +
+ +
+ + +
+
-
Time
Status
Backend
Model
Latency
Tokens
+
Time
Status
Backend
Model
Latency
In
Out
@@ -106,7 +132,7 @@ input:focus,select:focus{outline:none;border-color:#4a9eff}
-
Time
Status
Backend
Model
Latency
Tokens
+
Time
Status
Backend
Model
Latency
In
Out
+
+
+ + +
+ +
+
+
Loading...
+
+
+
+ +
+
+ + +
+ +
+
+
+
Loading...
+
+
+
+