网站最近被黑了,希望有助于改进我的登录脚本

时间:2013-02-14 08:58:26

标签: php security login mysqli

昨天我的网站被黑了,黑客设法登录管理区域并发布了一个博客,其中包含指向其网站的重定向链接。所以我想要一些帮助,使我的登录安全。

这是我的剧本:

    $username = $_POST['username'];
    $password = md5_base64($_POST['password']);

    $stmt = $mysqli->prepare("SELECT id, username, password, permission FROM user WHERE username = ? AND password = ?");
    $stmt->bind_param('ss', $username, $password);
    $stmt->execute();
    $stmt->bind_result($userid, $username, $password, $permission);
    $stmt->store_result();

    if(($numRows = $stmt->num_rows) > 0)
    {   
        $response_array['status'] = "success";
        $response_array['message'] = "Logged in";
    }
    else
    {
        $response_array['status'] = "error";
        $response_array['message'] = "Sorry, Wrong Username/Password Combination" .$password;                   
    }

继承md5_base64功能:

    function md5_base64 ( $data ) 
    { 
       return preg_replace('/=+$/','',base64_encode(md5($data,true))); 
    } 

非常感谢任何帮助,建议和改进。

3 个答案:

答案 0 :(得分:1)

需要有关攻击如何发生的一点信息。

  1. 可能是 SQL注入而不是编程 缺陷。

  2. 在将查询发送到数据库之前,请始终清理输入,a 单引号可以创建SQL注入攻击。

  3. 注意默认密码或简单密码,例如admin, admin123,12345等

  4. 人们很容易猜到或者可以使用字典攻击来破解它。

    也使用复杂密码。

  5. 如果您使用的是数据库,请使用准备好的声明

  6. 此致

    Anshul Katta

答案 1 :(得分:1)

您的登录脚本没有任何问题,除了功能md5_base64()这是非常愚蠢的。但从SQL注入的角度来看,这是无辜的 使用像'qwerty123'这样的密码,不需要狡猾的注射来突破。我怀疑,一个名字就像密码一样容易猜到。

或者还有其他一些缺陷。喜欢愚蠢的cookie来记住用户或类似的

答案 2 :(得分:0)

您需要问自己的问题 - 该人是如何获得密码的?

他是否登录了实际机器?这可以通过安全审核来防止,并删除对ftp / telnet的访问权限 - 编辑/etc/inetd.conf并删除不必要的服务。还要检查启动时启动的守护程序 - Google运行级别以及启动的内容。只需使用SSH即​​可访问该机器。

然后看看数据库。可以将MySql配置为仅接受来自某些IP地址的连接并使用SSH。还要确保通过具有特定数据库的已知权限的用户帐户访问数据库

同时检查防火墙。这可以防止人们远程访问机器。

然后查看Web服务器的配置。也许使用HTTPS来访问管理区域。

同时遵循上面的anshulkatta提供的建议