session的保持是通過cookie來維持的,所以如果使用者有勾選x天內免登入,這個session 就x天內一直有效,就是通過這個cookie來維護。如果沒選x天內免登入,基本上就本次才能保持session,下次開啟瀏覽器就要重新登入了。
所以在web安全裡,黑客通過xss,最終目的就是獲取cookie,從免登入直接進入系統。
這次要講的是,得到使用者cookie後,免登入,用httpclient 保持原來session訪問原本一定要登入才能做的事。
httpclient 4.x 庫可以自己處理cookie
有兩咱廣度可以新增cookie,
1.通過 httpclient.setcookiestore(cookiestore)
2.通過 httpget 或者 httppost 的addheader(new basicheader("cookie",cookie));
第一種,
httpclient是否在下次請求中攜帶從伺服器端請求來的cookie,完全是由設定決定的。
httpclient.getparams.setparameter(clientpnames.cookie_policy, cookiepolicy.best_match) 或者 cookiepolicy.browser_compatibility
如果設定為cookie策略為best_match,或browser_compatibility的話,httpclient會在請求中攜帶由伺服器返回的cookie。如果不設定,應該需要手動新增了cookiestore,才會保持sesson.
如果設定為cookie策略為預設的話,沒設定,則需要手動通過
httpclient.setcookiestore(cookiestore); 去設定.
注:如果用的是同乙個httpclient(上下兩個請求用同乙個httpclient物件。
且沒去手動連線放掉client.getconnectionmanager().shutdown(); )!
都不用去設定cookie的clientpnames.cookie_policy。httpclient都是會保留cookie的!
第二種,
通過header去設定cookie,這種方法,就是今天要用的應用場景,
我們得到乙個登入的cookie,免登入訪問。
可以用瀏覽器登入,然後f12通過console 執行 document.cookie 得到cookie,
用這個cookie ,在訪問時,設定 httpget 或者 httppost 的addheader(new basicheader("cookie",cookie));就可以免登入訪問。
這種場景我用來用第一種方法,設定沒成功,可能是因為用第一種時,沒設定path,domain,expire 的原因,我豬的。
這種場景可以解決第一次登入也需要驗證碼的**。沒有登入就沒辦法發布或重新整理資訊。
如趕集網。
CodeIgniter輔助函式之Cookie的使用
刪除一條 cookie 刪除一條 cookie,只需要傳入 cookie 名即可,也可以設定路徑或其他引數 來刪除特定 cookie。不提供 cookie 的值和 過期時間等引數。第乙個引數也可以是個陣列,包含多個要刪除的 cookie delete cookie name domain path ...
cookie和session區別,cookie禁用
cookie資料存放在瀏覽器上,session資料存放在伺服器上。很多瀏覽器都限制乙個站點最多儲存20個cookie,每個cookie儲存的資料不超過4k cookie並不是很安全,別人可以分析存放在本地的cookie進行cookie欺騙,考慮安全應該用session session在一定時間內儲存...
httpclient 上傳檔案
3.0版本 用multipartrequestentity方式,怎麼搞都不行。最後還是用了multipartpostmethod,才算搞定 總之,不好使啊.具體使用方式如下 2,post.addrequestheader content type multipart form data charse...