-1

これはコードです:

<html>
<body>

<?php
$valid = true;



//Check for first name value
if (empty($_POST['texts'])) {
    echo 'You forgot to type something in<br />';
    $valid = false;
}

if ($valid == true) {
    $conn1 = mysqli_connect('xxx') or die('Error connecting to MySQL server.');

    $name=   $_POST['name'];
    $title=  sha1($_POST['title']);
    $texts= $_POST['texts'];
    $forum_id = $_POST['forum_id'];




        $name = str_replace("'","''",$name);
        $title = str_replace("'","''",$title);
        $title = str_replace("b074acd521","STREAMER",$title);

        $texts = str_replace("'","''",$texts);


        $title = substr($title,0,8);


        $sql = "INSERT INTO post (name,title, texts, forum_id) VALUES ('$name', '$title', '$texts', '$forum_id')";
        mysqli_query($conn1, $sql) or die('Error inserting to database.');
        mysqli_close($conn1);

        header('Location: requests.php');
        }
else {
    echo 'Click <a href="javascript:history.go(-1)">HERE</a> to go back and adjust your entry.';
}

?>

</body>
</html>

サイトに投稿して id フィールドを空のままにしても ID が生成されます。これを修正するにはどうすればよいですか? また、名前フィールドが空の場合、デフォルトを何かにするにはどうすればよいですか?

4

1 に答える 1

2

ほとんどの (すべてではないにしても) ハッシュ アルゴリズムは、空の文字列をハッシュします。そうしないと、実際には「正直な」ハッシュにはなりません。アイデアは、ハッシュを元の入力に解読できないはずだということです。たとえば、次の場合:

All good boys deserve fudge!

All good boys deserve  fudge!

空のスペースをハッシュできないものとして扱うハッシュ アルゴリズムを使用すると、同じハッシュが得られるため、クラックが容易になります。

空の文字列をハッシュしたくない場合は、ハッシュする前に文字列をチェックする必要があります。何かのようなもの:

 if(!empty($_POST['user_input']) {
      $user_hash = sha1($_POST['user_input']);
 } else {
      echo "No input given, wiseguy!";
 }
于 2012-05-01T06:32:49.853 に答える