私は、小さくてシンプルなデータベースでPHPページを作成しています。私のページが脆弱かどうかを理解しようとしています
私はそれをオンラインで見て、URLにパラメータ "length"を渡そうとします:index.php/?length=1
それはうまく動作し、データを取得します。
私はindex.php/?length=1'
のような単一引用符を追加した場合、私は、ページにはSQLエラーを持っていない...
が、私はindex.php/?length=-1
を使用している場合、私は私のページにSQLエラーを参照してください。
これは私のページが脆弱であることを意味しますか?
これをさらにテストして問題を解決するにはどうすればよいですか?
編集:あなたは、ユーザー入力を取得し、直接あなたのMySQLの文に挿入のようなコード
$length = $wpdb->get_results($wpdb->prepare("SELECT `title`, `website`, `material`, `color`, `width`, `height`, `group`, `category`, `numbers_positive`, `numbers_negative`, `custom` FROM {$wpdb->shirts} WHERE `id` = '%d' ORDER BY `rank` ASC, `id` ASC", intval($shirt_id)));
if (!isset($shirt[0])) return false;
$shirt= $shirt[0];
$shirt->title = htmlspecialchars(stripslashes($shirt->title), ENT_QUOTES);
$shirt->custom = maybe_unserialize($shirt->custom);
$shirt->color = maybe_unserialize($shirt->color);
if ($this->hasBridge()) {
global $lmBridge;
$shirt->shirtColor = $lmBridge->getShirtColor($shirt->color);
}
$shirt = (object)array_merge((array)$shirt,(array)$shirt->custom);
unset($shirt->custom);
return $shirt;
私に戻ってくれてありがとう!私は学び、理解しようとしているので、忍耐強くお待ちください。 これはコードです:https://pastebin.com/sXhtPG7r ここでこのコードに問題があるかもしれませんか? 本当に問題がある場合は、このコードに基づいて、どのようにURLを挿入して注入する必要がありますか?私が作った基本的なテストには何の問題もなかったからです。 ありがとうございました – qefseri
ああ、WordPressであなたの準備文を使用しています。それはフレームワークがあなたのための多くのセキュリティチェックを処理するので、より安全になります。表示されるSQLエラーはおそらくid -1(負の1)が存在しないためで、 'intval'は引き続き負の数を返すためです。追加される見積もりは 'intval'で削除されます – Ice76