SQL インジェクション攻撃を防ぐにはどうすればよいでしょうか?

青灯夜游
リリース: 2020-09-10 13:20:47
オリジナル
18573 人が閲覧しました

SQL インジェクションは、悪意のある SQL ステートメントを実行できるインジェクション攻撃です。以下の記事ではSQLインジェクションについて紹介し、SQLインジェクション攻撃を防ぐ方法を簡単に紹介しますので、ご参考になれば幸いです。

SQL インジェクション攻撃を防ぐにはどうすればよいでしょうか?

#SQL インジェクションとは何ですか?

SQL インジェクション (SQLi) は、悪意のある SQL ステートメントを実行できるインジェクション攻撃です。攻撃者はデータベース クエリに任意の SQL コードを挿入することで、Web アプリケーションの背後にあるデータベース サーバーを完全に制御できるようになります。攻撃者は、SQL インジェクションの脆弱性を利用してアプリケーションのセキュリティ対策をバイパスしたり、Web ページまたは Web アプリケーションの認証と認可をバイパスして SQL データベース全体のコンテンツを取得したり、SQL インジェクションを使用してデータベース内の項目を追加、変更、削除したりすることができます。データベースの記録。

SQL インジェクションの脆弱性は、MySQL、Oracle、SQL Server などの SQL データベースを使用する Web サイトまたは Web アプリケーションに影響を与える可能性があります。犯罪者はこれを使用して、顧客情報、個人データ、企業秘密、知的財産などのユーザーの機密データに不正にアクセスする可能性があります。 SQL インジェクション攻撃は、Web アプリケーションの最も古く、最も一般的で、最も危険な脆弱性の 1 つです。

SQL インジェクション攻撃の種類

SQL インジェクション攻撃は、さまざまな方法で実行できます。攻撃者は、特定の攻撃方法を選択する前にシステムの動作を観察する場合があります。

インバンド インジェクション

これは、攻撃者が同じ通信チャネルを通じて攻撃を開始し、結果を取得できる典型的な攻撃です。これは、次の 2 つのインバンド手法によって行われます。

● エラーベースの SQL インジェクション: 表示されたエラー メッセージからデータベースに関する情報を取得します。

● ユニオンベースの SQL インジェクション: 攻撃者に依存します。 UNION ALL が盗んだ情報の結果を正当な結果と結び付けることができました。

どちらの手法も、アプリケーションによって送信される SQL、ブラウザに表示されるエラー、返される情報を変更する攻撃者に依存しています。アプリケーション開発者またはデータベース開発者がクエリで使用する値を適切にパラメータ化できなかった場合でも、成功します。どちらも試行錯誤の方法であり、エラーは検出できます。

ブラインド インジェクション

推論 SQL インジェクションとも呼ばれるブラインド インジェクション攻撃は、ターゲット データベースから直接データを表示するのではなく、攻撃者が動作を注意深く調べます。手がかり。 HTTP 応答の詳細、特定のユーザー入力に対する空白の Web ページ、データベースが特定のユーザー入力に応答するまでにかかる時間などは、攻撃者の目的に応じてすべて手がかりとなる可能性があります。また、攻撃者が試みた別の SQLi 攻撃ベクトルを指す可能性もあります。

帯域外インジェクション

この攻撃はやや洗練されており、攻撃者が単一の直接クエリで目的を達成できない場合に使用される可能性があります。応答攻撃攻撃。通常、攻撃者は SQL ステートメントを作成し、データベースに提示すると、データベース システムをトリガーして、攻撃者が制御する外部サーバーへの接続を作成します。このようにして、攻撃者はデータを収集したり、場合によってはデータベースの動作を制御したりすることができます。

二次インジェクションは帯域外インジェクション攻撃です。この場合、攻撃者は、データベース システムの別の動作によって保存および実行される SQL インジェクションを提供します。二次的なシステム動作 (時間ベースのジョブ、またはデータベースを使用する他の一般的な管理者やユーザーによってトリガーされるものなど) が発生し、攻撃者の SQL インジェクションが実行されると、システム攻撃者の制御への「接触」が発生します。

#SQL インジェクション攻撃を防ぐにはどうすればよいですか? 次の提案は、SQL インジェクション攻撃の成功を防ぐのに役立ちます:

1. 動的 SQL を使用しない

提供を避けるユーザーの入力は SQL ステートメントに直接入力されます。準備されたステートメントとパラメーター化されたクエリを使用する方が安全です。

2. 機密データをプレーン テキストで保存しないでください。

データベースに保存されているプラ​​イベート/機密データを暗号化します。これにより、攻撃者が正常に削除できないようにする別のレベルの保護が提供されます。機密データ。

3. データベースのアクセス許可と特権を制限する

データベース ユーザーの機能を必要最小限に設定します。これにより、攻撃者がアクセス権を取得した場合にできることが制限されます。アクセス。 。

4. データベース エラーをユーザーに直接表示しないようにします

攻撃者はこれらのエラー メッセージを使用してデータベースに関する情報を取得する可能性があります。

5. データベースにアクセスする Web アプリケーションには Web アプリケーション ファイアウォール (WAF) を使用します。

これにより、Web 指向のアプリケーションが保護され、SQL インジェクションの識別に役立ちます。設定によっては、SQL インジェクションの試行がアプリケーション (したがってデータベース) に到達するのを防ぐことにも役立ちます。

6. データベースと対話する Web アプリケーションを定期的にテストします

そうすることで、SQL インジェクションを可能にする可能性のある新しいバグやリグレッションを発見するのに役立ちます。

7. データベースを利用可能な最新のパッチに更新します

これにより、攻撃者が古いバージョンに存在する既知の弱点やバグを悪用することが防止されます。

概要: SQL インジェクションは一般的な攻撃手法ですが、データの暗号化を確実にするなどの適切な予防措置を講じることで、Web アプリケーションのセキュリティが確保され、テストされ、最新のパッチが適用されます。データを安全に保つために有意義な措置を講じることができます。

おすすめのビデオ チュートリアル: 「MySQL チュートリアル

以上がこの記事の全内容です。皆様の学習にお役に立てれば幸いです。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !

以上がSQL インジェクション攻撃を防ぐにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!