本文主要和大家分享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中文網其他相關文章!