1. 程式人生 > >代理登錄功能

代理登錄功能

系統 同時 驗證 .com 代理 request images style ip地址

  為了給別人提供賬號密碼以便xx,同時又為了防止賬號密碼被對方篡改,於是想做一個自己的登錄頁面,自己設計一套非真實的賬號密碼,然後別人通過在我的網頁上登錄我設計的賬號密碼,通過我的驗證後我再來提供xx服務。

方案一:模擬HTTP請求

  這是一開始最先想到的方案,於是通過fiddler,wireshark抓包分析,構造HTTP頭部模擬HTTP請求。這裏有個技術難點是我要偽造用戶的源IP,這樣服務器才會給用戶提供服務。但是無論我怎麽偽造HTTP頭部,服務器都是給我這個中間人提供服務,而不是給我的用戶提供服務。大概是因為偽造HTTP頭部的時候只能修改HTTP_X_FORWARDED_FOR和HTTP_VIA這兩個IP地址,這兩個地址是在有真正代理時候才會添加的頭部,而服務器驗證的時候可能沒取這兩個中的任何一個作為用戶IP,而是用REMOTE_ADDR作為用戶IP,這個地址又是不能修改的。嘗試了兩天行不通,隧換方案。

  ps:這個方案行不通的根本原因是模擬HTTP請求是在我這臺機器上發出的,而不是從我的用戶上發出的,服務器不認我的用戶。

方案二:用戶用客戶端登錄

  這個方案是最安全的,也是非常簡潔的。用戶登錄前先向我請求真正的賬號密碼,我還能驗證他是不是我的用戶(我自己的賬號密碼)。用戶會完全神不知鬼不覺得情況通過我來獲取服務。但是這個方案最大的缺點是要安裝客戶端,用戶可能根本不想去安裝(短期不是剛需),同時客戶端還要考慮各種操作系統的情況。隧放棄。

方案三:XMLHttpRequest跨域請求

  用戶先在我的網頁上通過我的驗證,在回傳登錄成功頁面的同時把真正的賬號密碼傳給他,頁面在加載的同時,利用XMLHttpRequest異步發送跨域請求。就是用戶在請求我的網頁時候,又向其他服務器發出登錄請求(跨域了)。跨域是指兩個請求的協議、域名、端口不一致。

  為了安全考慮跨域請求本來就是不被瀏覽器所支持的,但是目前越來越多的需求需要支持跨域請求,所以很多瀏覽器漸漸放寬了這個限制。用XMLHttpRequest發送跨域請求倒是不難,但是有個問題是不能拿到跨域請求的返回結果,而剛好我的服務需要根據返回結果來退出。但是沒有關系,在通過服務器的驗證後,用iframe插入服務器的首頁,頁面頂部有一個退出按鈕,所以可以嵌入進來給用戶用,缺點就是我控制不了這個按鈕,不能在用戶點擊退出時相應的跳轉成退出頁面。但是基本上是完成了功能。

  ps:這個方案有一個致命的缺點,懂行的人能看出來,盜取我的信息,但是對於一般人還是可用的。暫時就這樣吧,畢竟需求又不是很大。

登錄前首頁

技術分享

登錄後首頁

技術分享

代理登錄功能