0

こんにちは、今日、私は自分の Web サイトにアクセスしました。誰かが私のストーリー テーブルに 1000 を超えるクエリを挿入しているのを見ました。

私のスクリプトは php/mysql にあり、キャプチャが有効になっています。

単純なフォームと別の関数で、$vars をチェックして検証し、データベースに挿入します

彼はボットを使ってそのようなことをしていると確信しています

私は本当に混乱しています

これは、検証してテーブルに挿入する私の関数です

    function submitStory($name, $address, $subject, $story, $storyext, $topic, $alanguage,$tags) {

        $subject = check_words(check_html(addslashes($subject), "nohtml"));
        $story = check_words(addslashes($story), "nohtml");
        $storyext = check_words(addslashes($storyext), "nohtml");

        $result = $db->sql_query("INSERT INTO ".$prefix."_stories 
            (sid,catid,aid,title,time,hometext,bodytext,newsref,newsreflink,comments,counter,topic,informant,notes,ihome,alanguage,acomm,hotnews,haspoll,pollID,associated,tags,approved,section)
        VALUES
(NULL, '$catid', '', '$subject', now(), '$story', '$storyext', '','', '0', '0', '$topic', '$name', '', '', '$alanguage', '', '', '0', '0', '','$tag_ids','2','news')");

 mysql_error();


        include ('header.php');
        echo "<font class=\"content\"><b>"._THANKSSUB."</b><br><br>"
        .""._SUBTEXT.""
        ."<br>"._WEHAVESUB." $waiting "._WAITING."";

        include ('footer.php');
    }
4

3 に答える 3

3

@マック、

いくつかの変数に addslashes を追加していますが、残りは sql インジェクションにさらされています。関数をすべての変数に適用mysql_real_escape_stringし、リストに以下を含めてください。

$catid, $topic, $name, $alanguage, $tag_ids

適用することを強くお勧めしますmysql_real_escape_string が、本当に急いでいて、それが実際に何であるか、それが何をするのか疑問に思うことなくすぐに試してみるための簡単な修正が必要mysql_real_escape_stringな場合は、少なくともaddslashes上記の変数に適用してください function submitStory.

mysql_real_escape_stringの詳細については、こちらを参照してください。

お役に立てれば。我々に教えてください。

于 2010-03-01T18:52:29.663 に答える
2

ほとんどの場合、SQL インジェクション攻撃です。サイトをすぐにオフラインにして、脆弱性を修正し、Zeus ドロッパーなどのマルウェアについてデータベース全体を注意深くチェックするまで、サイトを再度有効にしないでください。

サイトがユーザー生成コンテンツを許可している場合は、悪質な HTML タグや JavaScript などを慎重にフィルタリングする必要があります。

于 2010-03-01T18:44:42.593 に答える
0
  1. 誰かがキャプチャを取得したら、ストーリーをいくつでも投稿できますか? (つまり、現在そのセッションで安全と見なされている)。これは、最初の試みで彼らが人間であることを証明するだけです...

  2. 登録後の投稿制限はありますか?

  3. XSS で資格情報を使用できないように、登録済みユーザーのセッションとフォームごとに生成された ID がありますか?

1 が true の場合、または 2 と 3 のいずれかが false の場合、スクリプトを実行してデータベースにスパムを送信できます。

于 2010-03-01T19:04:22.143 に答える