0

このコードに SQL インジェクションの可能性があることに気付いたかどうかを尋ねるだけです。見つかった場合は返信してください。このコードは、MySQL データベースから単純な「ジョーク」をロードするためのものです。ありがとう :)

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php

        try
        {
            $pdo = new PDO('mysql:host=localhost;dbname=website', 'root', '');
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $pdo->exec('SET NAMES "utf8"');
        }
        catch (PDOException $e)
        {
            $error = '<font color="red"><strong><p align="center">Unable to connect to the database server. Please visit again later!</p></strong></font>';
            include 'error.html.php';
            exit();
        }

        try
        {
            $sql = 'SELECT joketext FROM joke';
            $result = $pdo->query($sql);
        }
        catch (PDOException $e)
        {
            $error = '<font color="red"><strong><p align=center>Error Fetching Jokes</p></strong></font>';
            include 'error.html.php';
            exit();
        }

        while ($row = $result->fetch())
        {
            $jokes[] = $row['joketext'];
        }

        include 'jokes.html.php'; // Array listing parse
        ?>
    </body>
</html>
4

2 に答える 2

4

ユーザー入力を一切受け取らないため、それはできません。

于 2013-01-02T00:16:27.377 に答える
2

ユーザー入力をサニタイズしないと、SQL インジェクションが発生します。

例:

"SELECT joketext FROM joke WHERE joker = " . $_GET['joker']

変数 ( ) に必要なものを何でも入れることができhttp://yoursite.com/joke.php?joker=whatever、それが実行されるため、これは悪いことです!

あなたはユーザーの入力を受け付けないので、私にはそのようなことをする機会がありません。実行するクエリは毎回同じで、php ファイルにハードコードされています。

Wikiで SQL インジェクションの詳細を参照してください。

于 2013-01-02T00:18:54.060 に答える