この記事は、主にJavaインタビューの質問で比較的一般的な質問と、SQL注射の審査と防止の問題を研究しています。詳細は次のとおりです。
SQLインジェクションは、現在最も一般的に使用される攻撃方法です。その原則は、データベースを使用して特別な識別子を解析して、ページから背景に強制的に渡すことです。 SQLステートメント構造を変更し、拡張許可を達成し、高レベルユーザーを作成し、ユーザー情報を強制的に変更し、その他の操作を変更します。
SQLインジェクションの原理を通じて、SQLインジェクションをページに渡すことができるデータを判断すると、背景、特に特別な整数パラメーターと特別な文字パラメーターから渡されたデータを背景に信じてはなりません。
1.変数データ型と形式を確認します
固定形式の変数である限り、SQLステートメントが実行される前に、変数が予想された形式であることを確認するために、固定形式で厳密にチェックされる必要があります!
2。特別なシンボルをフィルターします
固定形式で決定できない変数の場合、それらを処理または転送するために特別なシンボルを使用する必要があります。 SQLにはあいまいさがあります。
写真をアップロードするとき
enctype =/” multipart/form-data/” enctype =” multipart/form-data”
「/」なしでは、フォームのenctype = "multipart/form-data"は、フォームのmimeエンコードを設定することを意味します。デフォルトでは、このエンコード形式はApplication/X-WWW-Form-Urlencodedですが、ファイルアップロードには使用できません。 MultiPart/Form-Dataを使用することにより、ファイルデータを完全に渡すことができ、次の操作が実行されます。
3.変数をバインドし、事前コンパイルされたステートメントを使用します
実際、Precompiled Statementsを使用して変数をバインドすることは、SQL注入を防ぐための最良の方法であり、事前コンパイルされたSQLステートメントを使用するセマンティクスは変更されません。 SQLステートメントでは、変数に疑問符を使用しますか?それは、ハッカーがどれほど有能であっても、彼はSQLステートメントの形式を変更することができず、根本的にSQL注入攻撃の発生を防ぐことを意味します。
4.データベース情報暗号化セキュリティ
データベース情報が漏れている場合、データベースパスワードやその他の情報(MD5など)を暗号化して、情報が漏れて、損失を特定の範囲内で制御できるようにすることがあります。
1. WebServerのエラー表示を要約するために、生産環境を開かないでください。
2。ユーザー側からの可変入力を信じないでください。固定形式の変数を厳密にチェックする必要があります。固定形式のない変数は、必要なフィルタリングを実行し、引用符などの特殊文字を逃がす必要があります。
3.変数にバインドされた事前コンパイルされたSQLステートメントを使用します
4.データベースアカウントの許可管理で良い仕事をする
5.ユーザーの機密情報を厳密に暗号化および処理します
優れたプログラムは安全性に注意を払う必要があります。そうしないと、練習にのみ適しています。
上記は、Javaインタビューの質問の分析とSQL注入の防止に関するこの記事のすべての内容です。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!