天天看點

偷梁換柱、移花接木與狸貓換太子

      做了一個單獨給外部系統通路的jsp頁面,但是外部系統通路這個jsp的時候,傳入了登入本地系統的使用者名和密碼,原型示範的時候,使用者提出了一個安全問題,即系統使用者名和密碼暴露了。

      然後考慮修改,首先由于外部系統自身限制(c/s架構系統,非web系統),是不能使用隐藏域表單送出方法來隐藏參數的

http://localhost:8080/xxx/xxx.do;jsessionid=abce?method=begin&name=/xxx&welcome=/.../.../aaa.jsp&username=user&pwd=123

      外部系統的請求方式

      開始想到的是本地頁面使用全屏顯示,去掉位址欄,但是百度下,給出的方法都是使用window.open方法,這樣有一個問題就是需要把請求過來的url處理,去掉使用者密碼參數,然後在本地頁面再次發起不帶使用者密碼的url請求,使用者和密碼使用隐藏域表單送出的方法傳遞,但是這樣在頁面右鍵檢視源檔案的時候仍然可以看到使用者密碼資訊。

      可能是上面的思路鋪墊,就是在本地頁面重新發起一個可以隐藏傳遞參數的url請求,由于是第二次請求,第一次請求時候已經登入過了系統,是以就考慮到第二次請求直接使用 ip:port/.../jsp 的方法,即由于第一次請求已經通過了系統驗證,是以第二次請求就不需要驗證了,即不需要發送使用者名密碼參數,簡單流程就是 在第一次請求頁面 發起第二次請求,打開新的頁面,關閉原來的頁面就可以了。由于兩次都是通路同一個jsp,添加了一個參數用于控制是否在目前頁面需要發起第二次請求。