首頁 >後端開發 >php教程 >php如何防止模擬請求

php如何防止模擬請求

小云云
小云云原創
2018-05-19 17:00:582172瀏覽

本文主要和大家分享php如何防止模擬請求的方法,希望能幫助大家。

1.有些網站是採用偵測此IP位址登入的密集度,多次登入後需要輸入驗證碼,那麼這時CURL模擬的提交就需要去對驗證碼圖片進行分析,這樣就會花費大量時間,當然,這種是對於防止登入被爆破,用戶資料洩露的。

2.還有一種就是直接在session保存產生的隨機碼,然後放在input的隱藏域,這種比驗證碼那種差了許多。

3.注意javascipt本身是無法跨域提交的,不是因為不能做到,而是防止別人惡意偷取用戶信息,例如點擊打開他的網站,用iframe打開正規網頁,然後在另一個iframe中進行偷取。

要實現ajax跨域訪問,需要設定

header("Access-Control-Allow-Origin:*"); //跨域权限设置,允许所有

要防止ajax跨域訪問,需要設定

header("Access-Control-Allow-Origin:http://www.test.com"); //只允许test.com跨域提交数据

4.如果要防止php的模擬請求,例如post請求,那麼就可以設定必須為ajax請求才能處理。

//判断是否为ajax请求,防止别人利用curl的post抓取数据
if(isset($_SERVER["HTTP_X_REQUESTED_WITH"])&&strtolower($_SERVER["HTTP_X_REQUESTED_WITH"])=="xmlhttprequest"){ }

完整解決方案:

header("Access-Control-Allow-Origin:http://leshen.applinzi.com/cet"); //只允许本站提交数据,前端防ajax跨域,其实js本来就不能跨域 

//判断是否为ajax请求,后端防止别人利用curl的post抓取数据
if(isset($_SERVER["HTTP_X_REQUESTED_WITH"])&&strtolower($_SERVER["HTTP_X_REQUESTED_WITH"])=="xmlhttprequest"){ 
    //处理业务逻辑
}else{ 
    echo "we caught you! you have no access!";
};

以上是php如何防止模擬請求的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn