1

私は今日、自分のサイトを保護する方法を知るために、SQLi と DoS/DdoS に関するさまざまな記事を読み始めました。

リンク:記事へのリンク

 // DB connection

    // $id = (int)$_GET['id'];
    $id = $_GET['id'];

    $result = mysql_query("SELECT id,name,pass FROM users WHERE id = $id")
 or die("Error");

    if($data = mysql_fetch_array($result))
     $_SESSION['name'] = $data['name'];



    if(preg_match('/(benchmark|sleep)/i', $id))
     exit('attack'); // no timing

私はこれの使用法を知りたいです.また、この後、男はそれをバイパスする方法を示しています.PDOが安全かどうか知りたいですか?

4

2 に答える 2

1

if(preg_match('/(benchmark|sleep)/i', $id))が文字列または(i は大文字と小文字を区別しない)に$id一致するかどうかをチェックします。benchmarksleep

提示されている文脈では、これはまったく意味がないと思いますが...私はむしろこれを行い、それで完了したいと思います:

$id = (int) $_GET['id'];

$result = mysql_query('SELECT id,name,pass FROM users WHERE id = '.$id);

id を int にキャストしていることに注意してください。それ以外の場合は 0 になるはずです。id 列は通常 1 から始まるため、おそらく何にも一致しません (とにかく私の経験から)。

于 2012-02-27T10:58:58.587 に答える
1

これの使い分けが知りたい

これは非常にばかげており、リソースを消費するクエリを実行することになっている SQL インジェクションの可能性を検出しようとする試みは明らかに役に立ちません。

また、この後、男はそれをバイパスする方法を示します

不思議ではありません。
コードをインジェクションできる状態にすると、それを実行するためのメソッドが何千もあります。

唯一の懸念事項は、一般的な注射です。

保護すると、ddos インジェクションは不可能になります。

PDO が安全かどうか知りたいですか?

まず、PDO はセキュアではありませんが、セキュアと見なされる準備済みステートメントを厳密かつ継続的に使用します。

第二に、いいえ、準備されたステートメントは問題の半分しか助けません

于 2012-02-27T11:35:18.520 に答える