四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

php你的驗(yàn)證碼安全碼?

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

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

問題出現(xiàn)了,在登陸密碼錯誤之后,我們不去訪問生成驗(yàn)證圖片的文件,那么如果Session中的驗(yàn)證碼沒有被清空,此時驗(yàn)證碼就是跟上次的一樣,辛辛苦苦構(gòu)建的驗(yàn)證碼機(jī)制就形同虛設(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>驗(yàn)證碼: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" onclick= this.src="index.php?act=captcha&"+Math.random() style="cursor: pointer;" title="看不清?點(diǎn)擊更換另一個驗(yàn)證碼。" />
      td>
      tr>
?>這里沒什么問題,來看登陸驗(yàn)證的代碼(我想這樣的驗(yàn)證思路,也是大多數(shù)人都在用的吧):

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

   /* 檢查驗(yàn)證碼是否正確 */
   $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);
    }
}
?>問題就出在上面這段代碼里,在檢查密碼錯誤之后,并沒有更新驗(yàn)證碼,這樣我們就可以把登陸頁面的驗(yàn)證碼圖片部分去掉,而只要用URL訪問一下驗(yàn)證碼的頁面,就可以只提交用戶名、密碼、剛才得到的驗(yàn)證碼實(shí)現(xiàn)暴力破解了,利用此方法,同樣可以實(shí)現(xiàn)灌水,刷票等。
大家可以看下面的圖片,增強(qiáng)點(diǎn)直觀的認(rèn)識。


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

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

php技術(shù)php你的驗(yàn)證碼安全碼?,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 根深蒂固韩国电影| 古董局中局2鉴墨寻瓷| 美足av电影欧美日韩| 大唐狄仁杰演员表介绍| 幻想电影在线播放完整版| 护校队申请书| 欧美日韩欧美日韩在线观看视频| 做菜的视频家常菜大全| 张健伟| 山楂树之恋演员表| 溜冰圆舞曲音乐教案| 视频污污| 搜狐搜狐| after4| 孙子兵法三十六计完整解释电子书| 男女视频在线播放| 诺远| 龙大谷| dakota johnson| 成人在线影片| 日本xxx.| 红日歌词完整版| 日本无翼乌邪恶大全彩h下拉式| 任嘉伦| 281封信电视剧演员表| 诺曼瑞杜斯| 抖音电脑直播| 特殊的按摩| 二年级上册期末真题卷| 中诺矫平机| 美容室4| 太医派的开胃汤配方| 奇梦石| 尹雪喜代表作有哪些电影| 建设工程价款结算暂行办法| 曹查理的10个经典电影| 电影《kiskisan》在线播放| 皮肤诊所| kami什么意思| 永远的乳房 电影| 四 电影|