メインコンテンツへ
短.be

SQL インジェクション

Web アプリケーションの入力欄に SQL コードを注入し、データベースを不正に操作する攻撃手法。

2025年9月28日 · 約 1 分で読めます

セキュリティ

SQL インジェクションとは、 Web アプリケーションの入力欄に SQL コードを注入し、データベースを不正に操作する攻撃手法です。 OWASP Top 10 に常にランクインする代表的な Web セキュリティ脅威であり、データの窃取、改ざん、削除、さらにはサーバーの完全な乗っ取りにつながる可能性があります。

攻撃の原理はシンプルです。たとえば、ログインフォームのユーザー名欄に ' OR '1'='1 と入力すると、バックエンドの SQL クエリが SELECT * FROM users WHERE username='' OR '1'='1' AND password='...' に変化し、条件が常に真になるため認証をバイパスできます。

SQL インジェクション対策の基本は、プリペアドステートメント (パラメータ化クエリ) の使用です。ユーザー入力を SQL 文字列に直接結合するのではなく、プレースホルダーを使ってパラメータとして渡すことで、入力値が SQL コードとして解釈されることを防ぎます。 ORM (Object-Relational Mapping) を使用している場合も、生の SQL クエリを書く際にはプリペアドステートメントを使用してください。

短縮 URL サービスでは、ユーザーが入力する URL やカスタムエイリアスが SQL インジェクションの攻撃ベクトルになり得ます。 DynamoDB のような NoSQL データベースを使用している場合、従来の SQL インジェクションは発生しませんが、 NoSQL インジェクション (クエリ条件の改ざん) のリスクは存在するため、入力バリデーションは依然として重要です。関連書籍は Amazon でも探せます。

X でシェアはてブ

この記事は役に立ちましたか?

関連用語

関連記事

よくある質問

SQL インジェクションを防ぐ最も効果的な方法は?
プリペアドステートメント (パラメータ化クエリ) の使用が最も効果的です。ユーザー入力を SQL 文に直接埋め込まず、パラメータとして渡すことで、 SQL コードの注入を防止します。
ORM を使用していれば SQL インジェクションは防げますか?
ORM は基本的にプリペアドステートメントを使用するため、通常の使用では安全です。ただし、生の SQL クエリを直接実行する機能を使用する場合は注意が必要です。

短縮 URL を作成してみませんか?

無料で URL を短縮する