安全代码与否? (需要帮助)

时间:2015-10-06 14:18:01

标签: php sql

这段代码可以安全地用于我的网站吗?没有sql注入或黑客攻击,是或否?我不想被黑客攻击等。

<?php

$db = new mysqli ("localhost", "-", "-", "-");

if($_GET['look'] && $_GET['username'])
{

    $username = $db->real_escape_string($_GET['username']);
    $look = $db->query("SELECT look FROM users WHERE username = '".$username."'")->fetch_assoc();
    echo $look['look'];
}

if($_GET['missie'] && $_GET['username'])
{
    $username = $db->real_escape_string($_GET['username']);
    $motto = $db->query("SELECT motto FROM users WHERE username = '".$username."'")->fetch_assoc();
    echo $motto['motto'];
}

if($_GET['while'] && $_GET['status'])
{
    $status = $db->real_escape_string($_GET['status']);
    $motto = $db->query("SELECT * FROM users WHERE motto = '".$status."'");
    while($lol = $motto->fetch_assoc()) {
        echo $lol['username'] . '/';
    }
}

?>

我怎样才能改善它?

1 个答案:

答案 0 :(得分:2)

如果你看一下mysql_real_escape_string的函数描述,它会说明

  

mysql_real_escape_string - 转义字符串中的特殊字符以用于SQL语句

所以它会逃脱你的参数,但我不建议完全依赖它。

在将来的版本中,php将不再支持mysql或mysqli,您将需要使用PDO。我为自己的项目多次使用的一个很好的资源是http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

PDO允许您创建预准备语句并为您转义参数并保护自己免受SQL注入。以下是使用PDO如何做到这一点的示例:

<span title="The great and mighty [% name | html %]">...</span>