ホームページ  >  記事  >  SQL インジェクション攻撃を防御するにはどうすればよいでしょうか?

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

ChipsDie
ChipsDieオリジナル
2019-05-16 18:13:4646593ブラウズ

SQL インジェクション攻撃とは

SQL インジェクションは、入力パラメーターに SQL コードを追加し、それを解析および実行のために SQL サーバーに渡す攻撃手法です。 SQL インジェクション攻撃を防御するにはどうすればよいでしょうか?

SQL インジェクションはどのように行われるのでしょうか?

1. Web 開発者は、すべての入力がフィルタリングされていることを保証できません。

2. 攻撃者は、SQL サーバーに送信された入力データを使用して、実行可能コードを構築します。

3. データベースには、対応するセキュリティ構成がありません (root または管理者アカウントを使用する代わりに、Web アプリケーションに特定のデータベース アカウントを設定します。特定のデータベース アカウントは、いくつかの単純な操作に対するアクセス許可を与え、次のようないくつかの操作をリサイクルします)ドロップ) 権限)。

SQL インジェクション攻撃の防御

1. パラメータ化されたフィルタリング ステートメントを使用する

SQL インジェクションを防ぐために、ユーザー入力を SQL ステートメントに直接埋め込むことはできません。代わりに、ユーザー入力をフィルタリングするかパラメータ化する必要があります。パラメーター ステートメントは、ユーザー入力をステートメントに埋め込む代わりにパラメーターを使用します。ほとんどの場合、SQL ステートメントは正しいです。ユーザー入力は 1 つのパラメーターに制限されます。

一般に、アプリケーションが SQL インジェクション攻撃に対して脆弱でないことを確認するには 2 つの方法があります。 1 つはコード レビューを使用する方法、もう 1 つはパラメータ化されたステートメントの使用を強制する方法です。パラメータ化されたステートメントの使用を強制すると、ユーザー入力に埋め込まれた SQL ステートメントが実行時に拒否されることになります。ただし、現在この機能はあまりサポートされていません。

2. ハッカーが違法なコマンドを実行するために使用するインタープリターの使用を避けてください。

3. SQL インジェクションを防止しますが、ハッカーがこれらのメッセージを使用する可能性があるため、詳細なエラー メッセージも避けます。標準の入力検証メカニズムを使用して、すべての入力データの長さ、タイプ、ステートメント、およびエンタープライズ ルールが検証されます。

4. 専門的な脆弱性スキャン ツールを使用します。

ただし、SQL インジェクション攻撃を防ぐだけでは十分ではありません。攻撃者はターゲットを自動的に検索して攻撃するようになりました。その技術は、他の Web アーキテクチャの脆弱性にも簡単に適用できます。企業は、有名な Accunetix Network Vulnerability Scanner などの専門的な脆弱性スキャン ツールに投資する必要があります。完全な脆弱性スキャナーは、Web サイト上の SQL インジェクションの脆弱性を特に検索するという点でネットワーク スキャナーとは異なります。最新の脆弱性スキャナーは、最近発見された脆弱性を検出します。

5. 最後に、企業は Web アプリケーション開発プロセスのすべての段階でコードのセキュリティ チェックを実行します。まず、Web アプリケーションを展開する前にセキュリティ テストを実装する必要があります。これは以前よりも重要かつ広範囲に及びます。企業は、脆弱性スキャン ツールやサイト監視ツールを使用して、展開後に Web サイトをテストする必要もあります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。