どのようにSQLインジェクション攻撃/脆弱性?

このFAQに答えるk4thrynによって書かれました:

は、 SQLインジェクションの脆弱性の悪いときに書かれたプログラムを使用する場合に発生することができますユーザは最初に入力を検証せずに、データベースクエリのデータを提供します。 これは最も頻繁に動的なコンテンツをWebページ内で発見されています。 フル開示が別のアプリケーションのためのWebサイトから、このテーマに関する記事をいくつかの優れたチュートリアル、わかりやすいだけでなく、多くの脆弱性が投稿されています。

SQLインジェクションの簡単な例では、ユーザー名とパスワードを提供する基本的なHTMLフォームログイン名です:


	  method="post" <form action="process_login.php"> 
	  <input type="text" name="username"> 
	  <input type="password" name="password"> 
	  < /フォーム> 

このHTMLのスニペットを考えると、 1つの仕事に" process_login.php "でビルドして、データベースクエリを実行されるスクリプトには、簡単な(そして最悪の)手段を推測することができますは、このようになります:

	  " IDを選択 
	 からログイン 
	 のWHERE =ユーザ名' $ユーザ名' 
	 とパスワード= ' $パスワード' " ; 

こうした状況下で、場合は、変数" $ユーザ名"と" $パスワード"は、ユーザの入力から直接、ログインスクリプトを簡単に有効なパスワードは、 SQLステートメントの構文が提供されていると一緒に遊んでだまされることができると信じています。 次の文字列をパスワードとして提供されたと仮定:

	  'または'' = ' 

して、ユーザー名として"ボブ"を与えた。 一度の変数は、上記のクエリは次のようになる補間されます:

	  " IDを選択 
	 からログイン 
	 ここで、ユーザー= ' Bob 'を 
	 とパスワード= ''または'' = '' " ; 

このクエリは、行が返されますので、最終的な句:

	  ... または'' = '' 

常にtrueに評価されます(空の文字列には、常に空の文字列に)同じです。

SQLインジェクション攻撃を防止する

最も一般的な方法vunerability 、この種のSQLインジェクションを防ぐために単一引用符のような危険な文字については、ユーザの入力をチェックしているとは何を期待する前に、すべてのユーザーのデータを提供したデータベースを伝える準備されたステートメントを使用して、それに渡されます。

SQL Serverのセキュリティ マスタリングのSQL Server 2000のセキュリティ SQL Serverのセキュリティ蒸留 Oracleのセキュリティハンドブック:あなたのOracle環境でのサウンドのセキュリティ計画を実施する
Amazon.comで購入SQLセキュリティ上、これらの優れた図書


上位5つの無料ネットワークツール

脆弱性管理ダミーの

Qualysの脆弱性管理ダミーで私たちのお友達と技術のための電子版によくあるご質問読者の無料コピーを提供しています。

脆弱性管理ダミー:

  • 脆弱性管理のための重要な必要性を説明
  • 詳細は最も成功した脆弱性管理プログラムの実践手順不可欠
  • 輪郭の様々な脆弱性管理ソリューション-それぞれの長所と短所を含む
  • ハイライトは、 QualysGuard脆弱性管理ソリューション賞を受賞
  • お客様の重要なリソースからの脆弱性を取り除くために10ポイントのチェックリストを提供
ブックマークとはSQLインジェクション攻撃/脆弱性?

最新のブログの投稿


英語 英語 ドイツ語 ドイツ語 スペイン語 スペイン語 フランス語 フランス語 イタリア語 イタリア語 ポルトガル語 ポルトガル語 ロシア語 ロシア語 オランダ語 オランダ語
ギリシャ語 ギリシャ語 ヒンディー語 ヒンディー語 日本語 日本語 韓国語 韓国語 中国語 中国語 中国語(簡体字) 中国語(簡体字) アラビア語 アラビア語

著作権2009 技術に関するよくある質問。 版権所有。 プライバシーポリシー。