想给phpmyadmin加一个验证码??但找不到验证的地方,可否告知一下。毕竟没有验证码很容易被社工的。同时我也想JS加密密码,然后再用PHP解密。知道的告知一下。谢谢。

解决方案 »

  1.   

    呵呵,那你就得去改改phpmyadmin的源码了。它自带的就有登录功能
      

  2.   

    本帖最后由 xuzuning 于 2012-12-20 16:46:41 编辑
      

  3.   

    @xuzuning 版主phpmyadmin不连接mysql怎样操作数据库里的东西呢?我觉得纳闷呢。又在那里将这些信息传给mysql呢??
      

  4.   

    @xuzuning 版主网上很多都讲怎样用phpMyAdmin连接mysql,但并没有说明如何修改phpMyAdmin加验证码以加强安全性。不然,有人不停地扫,一般情况下,一个小菜鸟,两三天,估计也扫出来了。
      

  5.   

    你是误解了我的意思了
    phpmyadmin 本身是不需要登陆的
    需要输入的是访问数据库的用户名和口令
    因此 phpmyadmin 没有提供验证,也无法判断登入 mysql 的用户名和口令是否合法如果你连你的 phpmyadmin 的入口都公开了出来,那还担心人家“扫”干什么?
      

  6.   


    版主,不是我主动公开的,也许是黑客通过某种方法探测到的。还有呀: if (! empty($_REQUEST['pma_username'])) {
            // The user just logged in
            $GLOBALS['PHP_AUTH_USER'] = $_REQUEST['pma_username'];
            $GLOBALS['PHP_AUTH_PW']   = empty($_REQUEST['pma_password']) ? '' : $_REQUEST['pma_password'];
            if ($GLOBALS['cfg']['AllowArbitraryServer'] && isset($_REQUEST['pma_servername'])) {
                $GLOBALS['pma_auth_server'] = $_REQUEST['pma_servername'];
            }
            return true;
        }我怎么看,都觉得这个不是验证用户名登录的地方呀??是不是在其它地方??
      

  7.   

    你把 phpmyadmin 的入口甚至目录都改个名,不就可以免除挡墙的“攻击”了吗
    我没说那是用户验证吧?我只是说与登录名相关,是吧?
    况且,我再三的说了,phpmyadmin是不需要登录的,用户登录只是为了连接mysql而设的
      

  8.   

    这个我理解,知道用户登录是为了连接mysql设计的,你知道在那里进行:"select * from user where user='".$user."' and password='".$password."'";的吗???
      

  9.   


    我想版主的意思是  phpmyadmin只是提供接口传入mysql用户名和密码进行连接的。所以应该找具体在哪里执行mysql_connect(xx,xx,xx),然后对连接的状态进行判断。至于你说的执行这句sql,应该是在mysql数据库内部执行的了;或许mysql自身有个表是用来放用户信息的。
      

  10.   

    我知道版主的意思,是我的表述不清楚。找了三个晚上,依然无结果。想给phpMyAdmin加一个验证码,杂就这么难呢?????
      

  11.   

    发现mysql的加密方式为sha1(unhex(sha1('xxx')))这样的,我直接在JS前端加密后,再传回去,然后直接的密码对比就行了。这样不更安全些????????
      

  12.   


    关键是phpMyAdmin里验证密码的地方在那里,找不到呀!!!!!!
      

  13.   

    问题是 phpMyAdmin 不验证密码,因为密码是给 mysql 用的,php中无法验证
    要说几遍才能明白呢?一般使用 phpMyAdmin 时都将用户名和密码写在 config 文件里的用户名或密码错了,就连不上 mysql,此时 mysql 会给出相应的错误信息
    这和你到银行取钱是一个道理,柜员受理你的业务,密码得由你自己输,输错了他就转告你错了
      

  14.   

    表述不准确,请版主谅解phpMyAdmin 总得去mysql中找用户名与密码同时存在的记录吧,不去mysql中查找,怎么知道有此用户呢?我想知道phpMyAdmin 是怎样把用户名与密码给到mysql的。
      

  15.   


    找到了:
     在common.inc.php里面大概第945行:// Connects to the server (validates user's login)
    $userlink = PMA_DBI_connect($cfg['Server']['user'], $cfg['Server']['password'], false);
      

  16.   

    前面我已经说了
    $GLOBALS['PHP_AUTH_USER'] = $_REQUEST['pma_username'];
    $GLOBALS['PHP_AUTH_PW']   = empty($_REQUEST['pma_password']) ? '' : $_REQUEST['pma_password'];
    这就是缓存传入的用户名和口令的
    当然还有几处类似的地方当你连接 mysql 时需要执行 mysql_connect('localhost', $username, $parssword); 这样是吧?
    这个 $username 和 $parssword 不就是传入的或预置的用户名和口令吗
    这就是 phpmyadmin 让你输入的用户名和口令和口令,是用于连接数据库的
    当数据库还没有连接时,phpmydamin 如何到 mysql 中去查找用户名和口令呢?
    那么如果数据库已经连接上了,验证这个用户名和口令又有什么用呢?
    当然,连接时 mysql 本身也要去 user 表验证用户名和口令的,但你是干预不了的这和你的应用系统是不一样的,你的应用系统的用户名和口令的确是要在连接mysql后去表中验证用户名和口令
    估计你把这两个混淆了
      

  17.   

    @xuzuning
    有个奇怪的事要问下:验证码加上了,但验证码生成的session或者cookie进不了phpMyAdmin里面,换句话说:phpMyAdmin应该在某个地方把session给注销掉了。目前验证码是可以正常显示,但使用不了。