料AboutJavaScriptを有効にして、ご利用ください。クエリを組み立てている場合に発生する。クエリを改変されることにより、データベースの情報漏えいやデータ改変につながる恐れがある。SQLインジェクションを防ぐには、パラメタ化クエリやストアドプロシージャによってデータの無害化および信頼できない入力値の検証を行うことが最も有効である。次の場合について考えてみよう。データベースに対して発行する。クエリの結果が空でなければ認証成功、空であれば認証失敗とする。部分を任意の文字列に置き換えることができるとする。部分に次のような文字列を与えることで、ユーザ認証を回避することが可能である。レコードをテーブルから選択する。評価は真となるので、パスワードはチェックされない。以降の部分は評価されないということである。レコードへのアクセスを許可される。入力することもできる。常に真なので、このクエリからはテーブル中のすべての行が出力される。ユーザ名とパスワードの検査は行われず、攻撃者は正しいユーザIDやパスワードを知らなくてもログインできてしまう。違反コード以下の違反コード例は、ユーザ認証を行うJDBCのコードを示している。パスワードはchar型配列として渡され、データベースへの接続が作成され、パスワードがハッシュ化されている。インジェクション攻撃を許している。いうような入力を与えることが可能だ。引数は攻撃には使えない。関数に渡されハッシュ値の計算に使われることで入力値の検証になっているためだ。提供しており、信頼できないデータを無害化してくれる。インジェクション攻撃を防ぐことができる。インジェクションが行われる可能性が残っている。(PreparedStatement)この適合コードではパラメタ化クエリを使っている。文字の部分に引数をはめこむことでクエリを構成する。引数の長さのチェックを行って、勝手な長さのユーザ名を入力されないようにしている。メソッドを使用して強固な型検査を行うこと。インジェクションの脆弱性低減につながる。プリペアドステートメントはデータベースにデータを挿入するクエリにも使用すること。リスク評価ユーザからの入力を無害化せずに処理したり保存したりすると、インジェクション攻撃につながる。バージョン4.1.0から4.1.37、5.5.0から5.5.26、6.0.0から6.0.16に影響を与えた脆弱性について記述されている。(ドット2つ)を含めることでディレクトリトラバーサル攻撃を行い、任意のファイルを読み取ることができた。アプリ開発にも適用可能である。Validating"翻訳元これは以下のページを翻訳したものです。有このページは役に立ちましたか?javascriptを有効にすると、ご回答いただけます。その他のご意見はPCサイトにて入力願います。