3

PDO と MySQLi プリペアド ステートメントに関するいくつかの記事を読んだ後、すでに stackoverflow.com でプリペアド ステートメントと SQL インジェクションに関する数十の質問を読んだ後、人々は、プリペアド ステートメントを正しく使用すれば、ユーザーからエントリをエスケープする必要はもうないと言っていましたが、私はまだセキュリティ上の懸念があることを心配していると思います。

第 1 の質問: reg-exp を使用してエントリをサニタイズし、準備されたステートメントでそれらを使用する前にエスケープする場合、それは私がそれを追い越しているようなものですか?

2番目の質問: 準備されたステートメントがSQLインジェクションに関する仕事をしている場合-人々のコメントと回答から-データベースが侵害され、クレジットカード番号とパスワードに関するデータがますます公開されているのはなぜですか? -既知のウェブサイト? それは、準備されたステートメントだけではそれほど免疫がないということですか、それともまったく別のトピックですか?

4

3 に答える 3

2
  1. SQLセキュリティのみを目的としてそれを行っている場合-はい、明らかで役に立たないやり過ぎです。
  2. はい、もちろん。実際のところ、ネイティブのプリペアド ステートメントはごく一部のケースしかカバーしておらず、他のケースにはセキュリティを提供していません。

それにもかかわらず、準備されたステートメントの一般的なアイデアは素晴らしいものです。そのため、開発者は他のケースを自分で処理する必要があります。

これが私の解決策です-2つのスカラーデータ型だけでなく、すべてのプレースホルダーを提供するライブラリ

于 2013-05-10T11:41:39.863 に答える
2

正規表現を使用してエントリをサニタイズし、準備されたステートメントでそれらを使用する前にエスケープする場合、それは私がそれを追い越しているようなものですか?

  • SQL で特別な意味を持つ文字を削除する場合、それは無駄です (そして、オドネルさんの姓を誤って保存することにつながります)。
  • これらの文字をエスケープすると、ダブル エンコーディングが行われ、(たとえば) Dear Ms. O\'Donnell, .
  • 日付が適切な日付であることを確認している場合、それはデータの整合性を適切に保護するためです。

準備されたステートメントがSQLインジェクションに関する仕事をしている場合 - 人々のコメントと回答から - データベースが侵害され、クレジットカード番号とパスワードに関するデータがますます公開され、「大きな」有名なWebサイトからでもアカウントがハッキングされているのはなぜですか? それは、準備されたステートメントだけではそれほど免疫がないということですか、それともまったく別のトピックですか?

なぜなら:

  • 誰もが準備済みステートメントを使用しているわけではありません
  • それらを使用するすべての人がそれらを正しく使用しているわけではありません
  • データベースは、他の経路 (Web サーバーでのリモート コード実行の脆弱性や、管理者ユーザーの SSH アカウントへのブルート フォース攻撃など) を介して攻撃される可能性があります。
于 2013-05-10T11:35:23.373 に答える