2016-04-30 16 views
0

私は、SQLインジェクションがユーザー入力に基づいて正しいかどうかを調べ、もしそうなら、その行を削除しようとしています。 例えば、ユーザがidNumberに対して123を入力した場合、その番号が終了すると、SQL文「select * from student where idNumber = "+ idNumber +";正しいでしょう。 それが正しいことが確認されたら、別のステートメントを使用してクエリを削除します。 私の主な問題は、それが正しいことを確認する方法を考え出すことです。SQLインジェクション(java)

ありがとうございます!

+3

* "SQLインジェクションが正しいかどうかを確認しようとしています" *?あなたのデータが盗まれたり、悪意のあるハッカーによって削除されたりするのが好きでない限り、ユーザー提供の値の[SQLインジェクション](https://en.wikipedia.org/wiki/SQL_injection)は決して正確ではありません。 'PreparedStatement'を使います。 – Andreas

+0

@Andreasのコメントに同意します。 SQLインジェクションを使用して、使用されている入力の正当性をチェックする理由は何ですか? PreparedStatementを使用してユーザーIDをsqlにバインドし、問合せが行を戻すかどうかを確認します。はいの場合は、deleteステートメントを実行します。 prodの使用のためにSQLインジェクションを避けてください。 –

+0

* "delete the query" *というのは、実際には "delete the student"という意味で、単にdelete文を実行して、削除されたものがあるかどうかを確認するのはなぜですか?最初に「選択」して時間を無駄にする必要はありません。 – Andreas

答えて

0
public static void CheckStudent(Connection con, String idNumber) throws SQLException { 
    Statement stmt = null; 
    String query = "select * from student where idNumber = " + idNumber + ";" 
    try { 
     stmt = con.createStatement(); 
     ResultSet rs = stmt.executeQuery(query); 
     if (!rs.isBeforeFirst()) { 
     //Here is where you do the check 
      System.out.println("No data"); 
     } 
    } catch (SQLException e) { 
     JDBCTutorialUtilities.printSQLException(e); 
    } finally { 
     if (stmt != null) { stmt.close(); } 
    } 
} 
関連する問題