yuusuke-roughの日記

Java,SpringBoot,趣味等

SQLインジェクションを学習した日記

はじめに

花粉で目が開かない日々。

社内の方からセキュリティを教えてもらったので、さっそくJDBCMySQLを繋げたときのプロジェクトを使って実験。

 

ちなみに、今したい事一覧。

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.