php驗證碼防止外網直接存取

來源:互聯網
上載者:User
2015-04-23 12:16:58
今天查看裡sae上部署的項目,突然看到sae的日誌,發現有幾個異常連結在請求驗證碼,於是突然萌發出要做一個防止驗證碼抓取功能。此功能可以防止驗證碼的盜用和破解,防止不必要的惡意攻擊和破解。
思路如下:
在驗證碼產生類調用之前對訪問連結進行驗證
1.驗證訪問來自與那個頁碼
2.其次驗證訪問地址
解決步驟:
1.利用php內建的功能來判斷驗證碼的訪問是否來自與某個頁碼基本是不現實的,php中貌似沒有這個功能(我是沒有找到),所以我們只能利用php實現間接的判斷,這裡我們用session來驗證是否來自與頁碼,因為需要用到的驗證碼的頁面很少,所以我們設定session的地方也不是太多,相對來說還是可以接受的。

2.驗證訪問地址,這個就比較簡單裡,我們可以用php提供的 $_SERVER函數,取出訪問地址。

3.在驗證碼產生之後設定session中驗證值,使其下次不能再驗證。


具體代碼(大家可以根據自己的需要修改此處只提供一個思想):

例如
1.在 需要載入驗證碼的頁面(或者controller層函數中)設定$_SESSION['check']=true;
2.在調用驗證碼之前調用驗證

  

基本上通過這兩步操作,就可以對驗證碼進行限制了,在本例中通過外網訪問網站時驗證碼會正常顯示,但是通過外網直接存取或者抓取驗證碼時會被拒絕,通過本地訪問驗證碼一切正常。


本機訪問

外網訪問

外網訪問登入

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.