php防止恶意频繁刷新页面或form提交
生活随笔
收集整理的這篇文章主要介紹了
php防止恶意频繁刷新页面或form提交
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
php防止惡意頻繁刷新頁面或form提交
很多方法:(以下僅簡單方法的簡單思路,對于防止菜鳥“黑客”足矣):
1、檢測referer來源地址是否為本站。($_SERVER['HTTP_REFERER'])
2、使用驗證碼來驗證數據提交的合法性,能使用驗證碼就盡量使用。
3、記錄IP,一定時間內禁止此ip進行二次提交/刷新。
4、前臺用js生成隨機加密碼。
等等......
自己根據網上的實例瞎弄了一個(僅供參考):
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <?php session_start(); function?getIps(){ ????if(getenv('HTTP_CLIENT_IP') &&?strcasecmp(getenv('HTTP_CLIENT_IP'),?'unknown')){ ????$IP?=?getenv('HTTP_CLIENT_IP'); ????}?elseif(getenv('HTTP_X_FORWARDED_FOR') &&?strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),?'unknown')) { ????$IP?=?getenv('HTTP_X_FORWARDED_FOR'); ????}?elseif(getenv('REMOTE_ADDR') &&?strcasecmp(getenv('REMOTE_ADDR'),?'unknown')) { ????$IP?=?getenv('REMOTE_ADDR'); ????}?elseif(isset($_SERVER['REMOTE_ADDR']) &&?$_SERVER['REMOTE_ADDR'] &&?strcasecmp($_SERVER['REMOTE_ADDR'],?'unknown')) { ????$IP?=?$_SERVER['REMOTE_ADDR']; ????} ????return?$IP???$IP?:?"unknow"; } function?allowRefresh($parameter){ ????date_default_timezone_set('Asia/Shanghai'); ????$nowUserIp?= getIps(); ????$allowOldTime?= md5($parameter.$nowUserIp); ??????????????????? ????$allowTime?= 3;//防刷新時間。單位:秒 10秒之后才能再次提交(刷新) ??????????????????? ????if(!isset($_SESSION[$allowOldTime])){ ????????$_SESSION[$allowOldTime] = time(); ????????return?true; ????} ????elseif(time() -?$_SESSION[$allowOldTime] >?$allowTime){ ????????$_SESSION[$allowOldTime] = time(); ????????return?true; ????} ????else{ ????????return?false; ????} } ??????????????????? if($_GET){ ????$k=$_GET['k']; ????$submitKey=$_GET['submitKey']; ????$toCheckStr=$k.$submitKey; ????if(empty($k)||empty($submitKey)||($submitKey?!==?'true')){ ????????die('errormsg'); ????} ??????????????????? ????if(allowRefresh($toCheckStr)==true){ ????????echo?'Congratulations!<br />mysql聽令:去搜索俺想要的結果!繼續往下執行...'; ????} ????else{ ????????echo?'請不要頻繁提交'; ????} } ?> <meta http-equiv="Content-Type"?content="text/html; charset=UTF-8"?/> <form action=""?method="get"> ????<input type="text"?name="k"?/><br /> ????<input type="text"?name="submitKey"?value="true"?/> ????<input type="submit"?value="提交"?/> </form> |
? ? ? 本文轉自許琴 51CTO博客,原文鏈接:http://blog.51cto.com/xuqin/1265776,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的php防止恶意频繁刷新页面或form提交的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: restful-api最佳实践
- 下一篇: tomcat的部署及session绑定反