A. 實現php中圖形驗證碼刷新的問題
首先要說明,瀏覽器對圖片,JS等文件會進行緩存當瀏覽器訪問圖片的時候,瀏覽器會查看緩存中是否有這張圖片如果有則使用緩存圖片,沒有則對伺服器重新發起訪問而瀏覽器判斷是否存在緩存文件是通過文件的url進行識別的如果url不同,瀏覽器就會對伺服器發起新的請求所有加上一個隨機參數就能實現驗證碼圖片的刷新因為隨機數不同,所以url就不同,所以每次瀏覽器都會對驗證碼圖片發起新的訪問,達到刷新驗證碼的功能無論是img.src = "imgcode.php?"+Math.random();還是imgcode.php?tm="+Math.random();都是為了不要使用瀏覽器中圖片緩存其中tm沒有任何意思,你可以隨便取你想要的名字甚至就像第一種情況不用給名字
B. php代碼,關於驗證碼刷新的問題
第一:你要保證你的驗證碼生成程序生成的是可以刷新的,你可以打開sub/authcode.php 刷新看看那個圖片會不會變,如果不會,在生成驗證碼的隨機數前初始化一下種子:srand((double)microtime()*1000000);
盡管php 4.0以後不再需要初始化,但實踐中,還是會碰到這里問題,所以初始化,萬無一失。
第二,防止緩存,可以在輸出驗證碼圖片前,加上 頭部緩存信息控制:
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
//這後面再輸出驗證碼圖片。
第三,由於瀏覽器有緩存,特別是圖片,會緩存下來,導致不會刷新,所以你可以在 reloadcode()這里添加一個參數用來改變url,這樣可以強制瀏覽器重新載入驗證碼圖片,
比如:
<script>
function ReloadCode(){
document.getElementById('gylverify ').src='sub/authcode.php?id='+ Math.random() ;
}
萬無一失,
</script>
C. php html關於局部刷新驗證碼圖片的問題
這里把form提交表單改成ajax提交
將用戶輸入信息傳遞給deal.php 看你用post還是get還是getJSON的方式傳遞給deal。php
假設是用的post方式 那麼trim($_POST['sub'])獲取用戶提交的驗證碼,和$_SESSION['str']//code.php中的驗證碼
對比,一致的話程序繼續執行,需要跳轉的話可以使用header()或者《script》window。href=
如果不一致 echo 「不一致」;
在之前的html頁面中的ajax中就能獲取到這個字元串「不一致」 如果不一致,重新調用code。php頂替原來的img標簽就可以啦
D. 請問php怎樣跳過這段驗證碼,對注冊又完全沒影響
除非你改程序,不然沒辦法。要不要網站有安全性可言么
E. php怎麼實現無刷新驗證驗證碼,最好有詳細代碼謝謝,還有在js中怎麼限製表單提交
您可以使用AJAX提交表單
VAR HTTP_REQUEST = FALSE;
功能send_request(URL){/ /初始化指定的處理程序發送請求的功能
HTTP_REQUEST = FALSE;
/ /開始初始化XMLHttpRequest對象
如果(window.XMLHttpRequest),{/ / Mozilla瀏覽器
HTTP_REQUEST =新的XMLHttpRequest();
如果(http_request.overrideMimeType){/ /設置MIME類別
http_request.overrideMimeType(「text / xml的');
}
}
其他(window.ActiveXObject){/ / IE瀏覽器
嘗試{
> HTTP_REQUEST =新的ActiveXObject(「MSXML2.XMLHTTP)的;
}趕上(E){
嘗試{
HTTP_REQUEST =新的ActiveXObject(」Microsoft.XMLHTTP「);
}趕上(E){}
}
}
如果(HTTP_REQUEST){/ /異常,創建一個對象實例失敗
window.alert(「不能創建XMLHttpRequest對象實例「);
返回FALSE;
} http_request.onreadystatechange =
的功能processRequestcc(){
(http_request.readyState == 4){/ /確定的狀態對象(http_request.status == 200){/ /信息已經成功返回,開始處理
警報(http_request.responseText);
} {/ /頁面不信
警報(「您請求的網頁一個例外。」);
}
}否則{/ /只要未讀完整
}
} / /發送請求,以確定的方式和網址,以及是否同步執行的代碼
http_request.open(「GET」,URL,真實); http_request.send(空);
}功能提交(){ send_request1(難的程序URL);/ /伺服器處理,經營信件
},然後提交頁面按鈕的onclick方法可以觸發
F. 注冊簡訊驗證碼,怎麼防止別人惡意刷介面
普通自開發
發送時間間隔
設置同一個號碼重復發送的時間間隔,一般設置為60-120秒。該手段可以在一定程度上防止簡訊介面被惡意攻擊,且對用戶體驗沒有什麼傷害。但是不能防止黑客更換手機號進行攻擊,防護等級較低。
獲取次數限制
限制某個手機號在某個時間段內獲取簡訊驗證碼次數的上限。採用這種策略時在產品設計過程中,有幾點需要注意。
定義上限值。根據業務真實的情況,甚至需要考慮到將來業務的發展定一個合適的上限值,避免因用戶無法收到簡訊驗證碼而帶來的投訴。
定義鎖定時間段。可以是24小時,可以是12小時、6小時。需要根據業務情況進行定義。
IP限制
設置單個IP地址某個時間段內最大的發送量。該手段可很好的預防單一IP地址的攻擊,但是也有兩個很明顯的缺點:
對於經常變更IP地址進行攻擊的黑客,該手段沒有很好的效果。
IP的限制經常會造成誤傷。如在一些使用統一無線網的場所,很多用戶連接著同一個無線網,這個IP地址就容易很快達到上限,從而造成連接該無線網的用戶都無法正常的收到驗證碼。
圖形驗證碼
在發送簡訊驗證碼之前,必須通過通過圖形驗證碼的校驗。這種手段相對來說可以防止某些攻擊,因此也是目前非常普遍的簡訊防攻擊機制。但是在使用過程中涉及到用戶體驗問題,不能簡單粗暴地套用這一策略。以下幾個點值得仔細考慮:
是不是每次獲取簡訊驗證碼之前都需要用戶輸入圖形驗證碼,一般來說這樣做會極大地影響用戶體驗,雖然是相對安全,但是用戶用著不爽了。
可以給一個安全范圍。結合手機號限制、IP限制來考慮,比如同一個手機號當天第3次獲取簡訊驗證碼的時候,出現圖形驗證碼;比如同一個IP地址當天獲取驗證碼次數超過100次後,出現圖形驗證碼。
加密限制
通過對傳向伺服器各項參數進行加密,到了伺服器再進行解密,同時用token作為唯一性識別驗證,在後端對token進行驗證,驗證通過才能正常將簡訊發送。該手段可以在保證用戶體驗的情況下,可以有效防止某些攻擊,因此也是目前比較常見的簡訊防攻擊機制。同時也有很明顯的缺點:
使用的加解密演算法可能會被破解,需要考慮使用破解難度較大的加解密演算法。
在演算法不被破解的情況下可以有效防止報文攻擊,但是無法防止瀏覽器模擬機式攻擊。
以上是幾種常見的簡訊風控策略,在具體的產品設計過程中,可以綜合使用。
使用第三方防禦
簡訊防火牆
為了在產品安全和優秀的用戶體驗之間尋找一個極佳的平衡。新昕科技的產品研發團隊結合各種風控策略的優點研發出了一款簡訊防火牆。 從以下幾個方面概括一下:
為保障優秀的用戶體驗,擯棄了目前影響用戶體驗最為嚴重的圖形驗證碼等人機校驗程序,做到無感驗證。從而達到完美的用戶體驗。
結合用戶的手機號碼 、IP地址 、設備指紋三個唯一身份標識設置不同維度的風控策略。將各個維度之間相互配合,達到一個最為合理的風控限制指標。
根據業務情況自動伸縮風控限制,在檢測處受攻擊時自動加大風控限制力度,在正常是再歸回到正常風控標准。
考慮到存在新老客戶的區別,特意增加老客戶VIP通道,在受到攻擊時,風控指標緊縮的情況下,保證老客戶通道暢通無阻,從而降低誤傷率。
通過以上策略可以有防止黑客通過隨意切換手機號及IP地址的方式可以刷取簡訊。同時加入模擬器檢測,以及參數加密等風控策略,有效防止黑客攻擊。
可通過風控防火牆控制台,實時觀測風控結果,在受到攻擊時達到第一時間預警的效果。
如需了解更多請關注新昕科技官網:newxtc.com
簡訊防火牆
簡訊防火牆
G. PHP注冊關於刷新驗證碼的問題
驗證碼的作用是防止機器人頻繁提交
本身就是不被建議的一種體驗方式 而你這種使用隨機數字來作為驗證碼的
根本對機器人一點防範都沒有 而且也根本不存在看不清的效果
實際驗證碼一般都是圖片 php使用示例
<img id="verifyImg" src="verify.php?uid=xxxxx" /><span onclick="chgVerify()"></span>
verify.php 這個是php生成圖片的頁面
uid=xxxxx 這個是隨機字元串 防止緩存導致圖片不發生改變
chgVerify() js函數
chgVerify()
{
document.getElementById('verifyImg').src='verify.php?uid='+Math.random();
}
驗證碼是把雙刃劍 用之前先考慮是否非得要用
H. PHP網站簡訊驗證碼如何防止被刷
1、加驗證碼;2、加時間限制,間隔一定時間才能有效;3、資料庫存儲手機發送情況,如手機號,時間,IP;4、根據收集數據,判斷是否刷機,禁用IP或者手機號等等,設置禁用時間5、根據實際情況,設置單天同個IP,手機號一天簡訊數量PHP網站簡訊驗證碼如何防止被刷
I. PHP中如何實現防刷新機制
最常見的防刷新肯定是在處理表單的時候,防止重復提交。我們有很多種方式來處理:1、提交表單之後,進行跳轉,這是很常用的方式。如果你的表單是從index.php提交到post.php頁面處理的,那麼提交完之後可以跳轉再回到index.php頁面,這樣再刷新就不會重復提交了。如果你是提交給當前頁面處理,可以在提交之後再重新跳轉到當前頁面。2、使用驗證碼,也很常用。在提交表單數據之前先判斷驗證碼,由於每提交一次,驗證碼就會變,所以這樣是可以避免重復提交的。3、使用Ajax方式,毫無疑問可以避免刷新重復提交。以上討論的是針對表單提交的防刷新,那麼其他的防刷新呢?比如,我要統計一篇文章的點擊數,我希望當用戶刷新頁面的時候,不進行統計,該怎麼辦呢?在此,站長只提供一種不完美的解決方案:即在當前的會話中,不統計重復載入。請看下面的代碼:<?php session_start();if(!$_SESSION['sid']){ $_SESSION['sid']=session_id(); echo 『您在此次會話中第一次瀏覽該頁面,進行統計』;}else{echo 『您已經在此次會話中瀏覽過該頁面,不統計』; }?>當用戶在第一次會話中訪問頁面時,進行統計,並把當前的會話id存在session,如果用戶刷新或者從瀏覽器重新載入,由於在當前會話中已經訪問過了,所以不會再次統計。但是,如果當用戶關閉瀏覽器後再瀏覽,是會統計的。在此,站長也就文章統計是否有必要做得這么精確,說一些個人看法吧。用戶瀏覽你網站的文章有這么幾種方式:1、通過點擊站內鏈接2、直接輸入網址3、通過第三方的鏈接或者跳轉這三種都構成正常的訪問,是應該統計的。刷新,嚴格來說確實不應該算進統計中去,而且在多進程的瀏覽器中,用戶打開新窗口重復輸入網址也跟刷新差不多,而文章的真實訪問量和重復刷新量之間的差距肯定是非常大的,所以即便是將刷新的次數算進統計中去,也不會產生太大的影響。上面的代碼,實現了不完美的防刷新,但是卻多出了額外的判斷,而且使用session也是要消耗資源的。
J. 為什麼PHP寫的驗證碼會被暴力破解,如何能做到不被暴力破解呢還有驗證碼一定要依賴COOKIE和SESSION嗎
驗證碼這個東西本身就是一個防止暴力破解的機制,用於區分機器和人的,跟用什麼寫的是沒有關系的。你可以設置以下邏輯來防止驗證碼被破解:
驗證碼更新機制,錯誤輸入後換一個驗證碼
IP封鎖機制,錯誤輸入五次驗證碼後鎖死相關IP