使用mySQLi保留字和函数 - 安全性

时间:2017-05-05 01:09:31

标签: mysql mysqli

我对SQLi没有经验,并且正在学习它,但我想问这个问题,因为我正在学习SQL注入攻击。

我使用mySQLi保留字和函数来处理我的查询并使我的数据库运行。

在阅读了这些攻击以及如何保护自己后,我想知道我是否应该使用这个库,因为我还没有看到其他人使用它。非我的讲师使用它,如果使用它是不好的做法,我可以问为什么?

以下是我的代码示例。正如您所看到的,我使用保留字和函数,如" mysqli_num_rows(),mysqli_free_result()和mysqli_close()。这个图书馆是不好的做法,为什么?谢谢

<?php
if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }


# Run the query, store result in a string and store number of rows returned 
$result= mysqli_query($con,"select * from gameRecords") or die("Error: ".mysqli_error($con));
//echo $result;

// Return the number of rows in result set
$rowcount=mysqli_num_rows($result);
if($rowcount !=0)
    {
        echo("Result set has $rowcount rows.<br>");
        /* fetch associative array*/
        while ($row = mysqli_fetch_assoc($result)) {
            ?>
            <tr><td>
            <?php
            echo $row["gameNo"]."</td>"."<td>";
            echo $row["oppTeam"]."</td>"."<td>";
            echo $row["date"]."</td>"."<td>";
            echo $row["location"]."</td>"."<td>";
            echo $row["result"]."</td>"."<td>";
            echo $row["ko"]."</td>"."<td>";
            echo $row["score"]."</td>"."<td>";
            echo $row["fhInfo"]."</td>"."<td>";
            echo $row["shInfo"]."</td>"."<td>";


            ?>
            </td>
            </tr>

            <?php
        }
        //free result set 
        mysqli_free_result($result);
    }

# Closes the database
mysqli_close($con);

?>

1 个答案:

答案 0 :(得分:1)

1,您使用的是mysqli,这是正确且安全的(以安全的方式使用)。不要与不推荐使用的mysql(没有&#39; i&#39;)混淆。

那些&#39;保留&#39;你说的是功能。它们可供使用。你是以程序的方式使用它,这也是一种品味问题以及你如何构建更多的东西而不是安全问题。

您的代码没有任何问题。就你的查询而言。

$result= mysqli_query($con,"select * from gameRecords");

但是如果您在哪里使用输入来构建您的查询,则需要转向准备好的语句。 http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

Theres有很多关于准备好的声明的文件。我也在使用mysqli,大多数人都认为你在谈论语句时正在使用PDO,所以在寻找答案时要小心,语法相似但不完全相同。