C# Tips | セキュリティ:SQL Injection対策

C# C#
スポンサーリンク
スポンサーリンク

SQL Injection対策は「データベースを守るための最重要防御」です

業務システムでデータベースを扱う読者のみなさんにとって、 SQL Injection(SQLインジェクション)は、もっとも有名で、もっとも危険な脆弱性のひとつです。 攻撃者が入力値に悪意あるSQL断片を混ぜることで、 本来意図していないSQLが実行され、 機密情報の漏えい・データ改ざん・削除などにつながります。

ここでは、プログラミング初心者の方にも分かるように、 C#で実務的に使える SQL Injection対策ユーティリティ をステップバイステップで解説し、 例題・コード・テンプレートを交えて詳しく説明していきます。

SQL Injectionの仕組みをかみ砕いて理解する

文字列連結でSQLを作ると何が危険なのか

典型的な危険なコードは次のようなものです。

string userName = GetUserInput(); // ユーザー入力
string sql = $"SELECT * FROM Users WHERE Name = '{userName}'";
C#

ここで、userName に次のような文字列が入っていたらどうなるでしょうか。

' OR '1'='1

すると、SQLはこうなります。

SELECT * FROM Users WHERE Name = '' OR '1'='1'

この結果、「すべてのユーザー」が取得されてしまいます。 さらに悪意ある攻撃者は、次のような入力を試みるかもしれません。

'; DROP TABLE Users; --

これがそのままSQLに埋め込まれると、 テーブル削除などの致命的な操作が実行される可能性があります。

タイトルとURLをコピーしました