はじめに
花粉で目が開かない日々。
社内の方からセキュリティを教えてもらったので、さっそくJDBCでMySQLを繋げたときのプロジェクトを使って実験。
ちなみに、今したい事一覧。
Reactで交差オブザーバーとチャット部分更新したい。
ログ管理したい。
Interceptorでヘッダとペイロードチェックしたい。
スコープ、スレッドセーフ意識してコード修正したい。
STOMPのとこ単体テストしたい。
AtCoderしたい。
多い...。
内容
ConnectorJでお試し。
DBにはPERSONテーブルにID:1とNAME:Ara_Yuusukeがあります。
String id = "1";
String name = "ARA_YUUSUKE";
String SQLInjection = "' or 'A' = 'A";ResultSet rs = st.executeQuery(query);
rs.next();
System.out.println(rs.getString(1) + " " +rs.getString(2));
出力
1 ARA_YUUSUKE
一方で...PreparedStatement
PreparedStatement ps = con.prepareStatement("SELECT * FROM person where id = ? and name = ?");
ps.setInt(1,1);
ps.setString(2,"' or 'A' = 'A");
ResultSet r = ps.executeQuery();
r.next();
System.out.println(r.getString(1) + " " + r.getString(2));
出力
Illegal operation on empty result set.