SQL Injection
727 ワード
SQL InjectionはSQL構文の弱点を利用して攻撃する方法です.
たとえば、次の構文を使用して、ユーザーのIDとパスワードが正しいかどうかを確認します.
//SELECT * FROM USER WHERER ID='' AND PW ='';
「IDの入力」ウィンドウにTESTIDを入力すると、再びエラーが発生します.
//SELECT * FROM USER WHERER ID='TESTID'' AND PW ='';
「アイデンティティの入力」ウィンドウに「or 1=1#」と入力すると、#の後のコメントでデータ全体を出力してログインできます.
//SELECT * FROM USER WHERER ID='' or 1=1#' AND PW ='';
他にもいくつかのsql注入方法があります.これを解決するには、Statementクラスではありません.
PreparedStatementを使用すると、パラメータ値としてユーザー名とパスワードを受信することで、上記の問題を解決できます.
(このテストではMysql、Eclipse、JDBCを使用します.)
たとえば、次の構文を使用して、ユーザーのIDとパスワードが正しいかどうかを確認します.
//SELECT * FROM USER WHERER ID='' AND PW ='';
「IDの入力」ウィンドウにTESTIDを入力すると、再びエラーが発生します.
//SELECT * FROM USER WHERER ID='TESTID'' AND PW ='';
「アイデンティティの入力」ウィンドウに「or 1=1#」と入力すると、#の後のコメントでデータ全体を出力してログインできます.
//SELECT * FROM USER WHERER ID='' or 1=1#' AND PW ='';
他にもいくつかのsql注入方法があります.これを解決するには、Statementクラスではありません.
PreparedStatementを使用すると、パラメータ値としてユーザー名とパスワードを受信することで、上記の問題を解決できます.
(このテストではMysql、Eclipse、JDBCを使用します.)
//SQL Injection 방지
PreparedStatement stmt = con.prepareStatement("select * from member where id=? and pw=?");
stmt.setString(1, id);
stmt.setString(2, pw);
Reference
この問題について(SQL Injection), 我々は、より多くの情報をここで見つけました https://velog.io/@hack_ho/SQL-Injectionテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol