欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php你的驗證碼安全碼?

 更新時間:2007年01月02日 00:00:00   作者:  
驗證碼的作用主要有防止暴力破解,防止惡意灌水,防止自動提交等,在這里我就不多說了。驗證碼的類型也有數(shù)字、字母等,甚至厲害點的還有中文的。但是不管你的驗證碼多么厲害,只要你在表單驗證中存在如下的失誤,你的驗證碼就形同虛設(shè)!

驗證碼的一般思路,就是每次登陸的地方訪問一個腳本文件,該文件生成含驗證碼的圖片并將值寫入到Session里,提交的時候驗證登陸的腳本就會判斷提交的驗證碼是否與Session里的一致。

問題出現(xiàn)了,在登陸密碼錯誤之后,我們不去訪問生成驗證圖片的文件,那么如果Session中的驗證碼沒有被清空,此時驗證碼就是跟上次的一樣,辛辛苦苦構(gòu)建的驗證碼機制就形同虛設(shè)了。

下面我們先來看一段有問題的代碼:
登陸部分:

CODE:
<tr>
          <
td>管理員姓名:td>
          <
td><input type="text" name="username" />td>
      tr>
      <
tr>
          <
td>管理員密碼:td>
          <
td><input type="password" name="password" />td>
      tr>
            <
tr>
          <
td>驗證碼:td>
          <
td><input type="text" name="captcha" onkeyup="pressCaptcha(this)" />td>
      tr>
      <
tr>
      <
td colspan="2" align="right">
      <
img src="index.php?act=captcha&1628020115" width="145" height="20" alt="CAPTCHA" border="1" onclickthis.src="index.php?act=captcha&"+Math.random() style="cursor: pointer;" title="看不清?點擊更換另一個驗證碼。" />
      td>
      tr>
?>
這里沒什么問題,來看登陸驗證的代碼(我想這樣的驗證思路,也是大多數(shù)人都在用的吧):

CODE:
/*------------------------------------------------------ */
//-- 驗證登陸信息
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'signin')
{
    include(
'../includes/cls_captcha.php');

   
/* 檢查驗證碼是否正確 */
   
$validator = new captcha();
   if (!
$validator->check_word($_POST['captcha']))
   {
       
sys_msg($_LANG['captcha_error'], 1);
    }

    
/* 檢查密碼是否正確 */
    
$sql "SELECT user_id, user_name, password, action_list FROM " .$ecs->table('admin_user'). 
            
" WHERE user_name='$_POST[username]' AND password='" .md5($_POST['password']). "'";
    
$row $db->GetRow($sql);

    if (
$row)
    {
        
// 登錄成功
        
set_admin_session($row['user_id'], $row['user_name'], $row['action_list']);

        
// 更新最后登錄時間和IP
        
$db->Execute("UPDATE " .$ecs->table('admin_user'). 
                    
" SET last_time='" .date('Y-m-d H:i:s'time()). "', last_ip='" .real_ip(). "'".
                    
" WHERE user_id=$_SESSION[admin_id]") OR die($db->ErrorMsg());

        if (isset(
$_POST['remember']))
        {
            
setcookie('ECSCP[admin_id]',    $row[0], time() + 3600 24 360);
            
setcookie('ECSCP[admin_pass]',  md5($row['password'] . $_CFG['hash_code']), time() + 3600 24 360);
        }

        
header('location:./');
    }
    else
    {
        
sys_msg($_LANG['login_faild'], 1);
    }
}
?>
問題就出在上面這段代碼里,在檢查密碼錯誤之后,并沒有更新驗證碼,這樣我們就可以把登陸頁面的驗證碼圖片部分去掉,而只要用URL訪問一下驗證碼的頁面,就可以只提交用戶名、密碼、剛才得到的驗證碼實現(xiàn)暴力破解了,利用此方法,同樣可以實現(xiàn)灌水,刷票等。
大家可以看下面的圖片,增強點直觀的認(rèn)識。


解決方法:我們需要在檢查密碼錯誤后更新驗證碼,對于留言等類型的,還要在提交成功后更新驗證碼。

安全就是這樣,我們總是想讓自己的程序更安全,但是一般情況下,我們又總是走在常規(guī)思維里跳不出來,于是導(dǎo)致我們的程序出現(xiàn)了很多"非常規(guī)漏洞",或者叫做"缺陷",總之就是不完美。我寫這篇文章除了指出上面這個問題之外,還希望大家都能行動起來,用"非常規(guī)"眼光,重新檢查下自己的程序,把更多以前自己沒有發(fā)現(xiàn)的小問題帖出來,讓大家共同提高!

相關(guān)文章

  • php 防止單引號,雙引號在接受頁面轉(zhuǎn)義

    php 防止單引號,雙引號在接受頁面轉(zhuǎn)義

    在使用php的過程中,我們需要使用單引號和雙引號,所以需要轉(zhuǎn)義一下
    2008-07-07
  • [PHP]實用函數(shù)9

    [PHP]實用函數(shù)9

    [PHP]實用函數(shù)9...
    2007-11-11
  • php微信開發(fā)接入

    php微信開發(fā)接入

    這篇文章主要為大家詳細(xì)介紹了php微信開發(fā)接入,通過檢驗signature對請求進(jìn)行校驗,感興趣的小伙伴們可以參考一下
    2016-08-08
  • PHP封裝的Twitter訪問類實例

    PHP封裝的Twitter訪問類實例

    這篇文章主要介紹了PHP封裝的Twitter訪問類,通過curl調(diào)用實現(xiàn)針對Twitter的常用訪問功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • PHP過濾黑名單關(guān)鍵字的方法

    PHP過濾黑名單關(guān)鍵字的方法

    這篇文章主要介紹了PHP過濾黑名單關(guān)鍵字的方法,通過保存過濾關(guān)鍵字到txt文件,再讀取txt文件內(nèi)容進(jìn)行正則匹配替換來實現(xiàn)過濾功能,需要的朋友可以參考下
    2014-12-12
  • 示例詳解Laravel重置密碼代碼重構(gòu)

    示例詳解Laravel重置密碼代碼重構(gòu)

    假如需要使用laravel搭建一個后臺內(nèi)容管理系統(tǒng),但laravel默認(rèn)的登陸注冊不能滿足目前的需求,重置密碼的話因為是用在后臺,并且不需要發(fā)送郵件進(jìn)行重置,所以默認(rèn)的重置密碼肯定是不行的。下面我們一起來看看如何進(jìn)行Laravel重置密碼重構(gòu)。
    2016-08-08
  • 解析WordPress中控制用戶登陸和判斷用戶登陸的PHP函數(shù)

    解析WordPress中控制用戶登陸和判斷用戶登陸的PHP函數(shù)

    這篇文章主要介紹了WordPress中控制用戶登陸和判斷用戶登陸的PHP函數(shù),WordPress現(xiàn)在多用戶功能已推出了一段時間,針對多用戶需求的開發(fā)也日益增多,需要的朋友可以參考下
    2016-03-03
  • 配置eAccelerator和XCache擴(kuò)展來加速PHP程序的執(zhí)行

    配置eAccelerator和XCache擴(kuò)展來加速PHP程序的執(zhí)行

    這篇文章主要介紹了配置eAccelerator和XCache擴(kuò)展來加速PHP程序的執(zhí)行的方法,XCache和PHP5.5以來自帶的Zend Opcache一樣都是在共享內(nèi)存中存儲Opcode的緩存器,需要的朋友可以參考下
    2015-12-12
  • 使用PHP獲取網(wǎng)絡(luò)文件的實現(xiàn)代碼

    使用PHP獲取網(wǎng)絡(luò)文件的實現(xiàn)代碼

    PHP獲取網(wǎng)絡(luò)文件的實現(xiàn)代碼,其實就是一個小偷程序。學(xué)習(xí)php小偷程序的朋友可以參考下。
    2010-01-01
  • PHP+Ajax實現(xiàn)的檢測用戶名功能簡單示例

    PHP+Ajax實現(xiàn)的檢測用戶名功能簡單示例

    這篇文章主要介紹了PHP+Ajax實現(xiàn)的檢測用戶名功能,結(jié)合簡單實例形式分析了php結(jié)合ajax基于事件響應(yīng)動態(tài)查詢數(shù)據(jù)庫及用戶名檢測相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02

最新評論