ホームページ >データベース >mysql チュートリアル >WebセキュリティでSQLインジェクションを防ぐ方法

WebセキュリティでSQLインジェクションを防ぐ方法

little bottle
little bottle転載
2019-04-29 13:27:183275ブラウズ

SQL インジェクションとは、Web フォームに SQL コマンドを挿入して、ページ リクエストのドメイン名やクエリ文字列を送信または入力し、最終的にサーバーをだまして悪意のある SQL コマンドを実行させることです。たとえば、以前の多くの映画やテレビの Web サイトで VIP 会員のパスワードが漏洩しました。 WEB フォーム送信時にクエリ文字が公開されることが多く、このタイプのフォームは SQL インジェクション攻撃に対して特に脆弱です。

SQL インジェクションの原則

アプリケーションが入力コンテンツを使用して、アクセスするための動的 SQL ステートメントを構築する場合データベースに対して SQL インジェクション攻撃が発生する場合。 SQL インジェクションは、フィルターされていないユーザー入力を含む文字列として渡されるストアド プロシージャをコードで使用している場合にも発生する可能性があります。

SQL インジェクションにより、攻撃者がアプリケーション ログインを使用してデータベース内のコマンドを実行できる可能性があります。この問題は、アプリケーションがデータベースに接続するために過剰な権限を持つアカウントを使用する場合に深刻になる可能性があります。一部のフォームでは、ユーザーが入力した内容が動的 SQL コマンドの構築に直接使用されたり、ストアド プロシージャの入力パラメーターとして使用されたりすることがありますが、これらのフォームは SQL インジェクション攻撃に対して特に脆弱です。多くの Web サイト プログラムを作成すると、ユーザー入力の正当性が判断されなかったり、プログラム内の変数が適切に処理されなかったりして、アプリケーションにセキュリティ リスクが発生します。このようにして、ユーザーはデータベース クエリ コードを送信して機密情報を取得したり、プログラムから返された結果に基づいてサーバー全体を制御したりできるため、SQL インジェクションが発生します。

#SQL インジェクションを防ぐ方法?

    #ユーザー入力を決して信用しないでください。ユーザーの入力を検証するには、正規表現を使用するか長さを制限し、一重引用符や二重 "-" などの機密記号を変換します。
  1. SQL の動的アセンブリは使用しないでください。データのクエリとアクセスには、パラメーター化された SQL を使用するか、ストアド プロシージャを直接使用できます。
  2. 管理者権限でデータベース接続を使用しないでください。アプリケーションごとに制限されたアクセス許可を持つ別のデータベース接続を使用してください。
  3. 機密情報を直接保存せず、パスワードや機密情報を暗号化またはハッシュ化してください。
  4. アプリケーションの例外情報は、できるだけ少ないヒントを提供する必要があります。カスタム エラー情報を使用して、元のエラー情報をラップするのが最善です。

関連チュートリアル:

SQL ビデオ チュートリアル

以上がWebセキュリティでSQLインジェクションを防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。