回答編集履歴

3

user_id訂正

2016/06/16 02:53

投稿

masaya_ohashi
masaya_ohashi

スコア9206

test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
  この行は「1」つ目の?の場所に「セッションに保存されたuser_id」を「String」で割り当てる意味です。
46
46
 
47
- 例えばセッションに保存されたuser_idがsatoである場合、最終的にこのPreparedStatementは以下のSQLと同じ意味を持ちます。
47
+ 例えばセッションに保存されたuser_idがuserである場合、最終的にこのPreparedStatementは以下のSQLと同じ意味を持ちます。
48
48
 
49
49
 
50
50
 
@@ -62,8 +62,10 @@
62
62
 
63
63
  LEFT JOIN book ON lend.book_no = book.book_no
64
64
 
65
- WHERE user.user_id = "sato"
65
+ WHERE user.user_id = "user"
66
66
 
67
67
  ```
68
68
 
69
69
  試しにこのSQLをMySQL上で実行してみてください。
70
+
71
+ ※すいません、satoは1冊も借りていないのでuserに訂正しました。

2

修正

2016/06/16 02:53

投稿

masaya_ohashi
masaya_ohashi

スコア9206

test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  ```
44
44
 
45
- この行は「1」つ目の?の場所に「セッションに保存されたuser_id」を割り当てる意味です。
45
+ この行は「1」つ目の?の場所に「セッションに保存されたuser_id」を「String」で割り当てる意味です。
46
46
 
47
47
  例えばセッションに保存されたuser_idがsatoである場合、最終的にこのPreparedStatementは以下のSQLと同じ意味を持ちます。
48
48
 

1

SQL提示

2016/06/16 02:49

投稿

masaya_ohashi
masaya_ohashi

スコア9206

test CHANGED
@@ -9,3 +9,61 @@
9
9
  パスワードがどうも平文で保存されているように見えます。暗号化をかけて「ハッシュ値」を保存しておいて、一致を見るときは受け取ったパスワードを同じ暗号化をかけて、「ハッシュ値」の一致を確認することが望ましいです(検索でよく出てくるMD5やSHA1はクラックされやすいので、もっと強固な方式を採用してください)。参考としてSHA256の暗号化方法を貼っておきます。
10
10
 
11
11
  [https://www.websec-room.com/2013/02/27/238](https://www.websec-room.com/2013/02/27/238)
12
+
13
+
14
+
15
+ #追記
16
+
17
+ 参考だと伝わらないようなので答えを書きます。
18
+
19
+ ```Java
20
+
21
+ sql = "SELECT * FROM lend " +
22
+
23
+ "LEFT JOIN user ON lend.user_no = user.user_no " +
24
+
25
+ "LEFT JOIN book ON lend.book_no = book.book_no " +
26
+
27
+ "WHERE user.user_id = ?";
28
+
29
+ ps = con.prepareStatement(sql);
30
+
31
+ ps.setString(1, (String) session.getAttribute("user_id"));
32
+
33
+ rs = ps.executeQuery();
34
+
35
+ ```
36
+
37
+ もうすこしJDBCの使い方を勉強しましょう。前回の質問のコメントでも説明しましたが、PreparedStatementには「?」を置くことで「後から値を設定」できます。
38
+
39
+ ```Java
40
+
41
+ ps.setString(1, (String) session.getAttribute("user_id"));
42
+
43
+ ```
44
+
45
+ この行は「1」つ目の?の場所に「セッションに保存されたuser_id」を割り当てる意味です。
46
+
47
+ 例えばセッションに保存されたuser_idがsatoである場合、最終的にこのPreparedStatementは以下のSQLと同じ意味を持ちます。
48
+
49
+
50
+
51
+ ```SQL
52
+
53
+ SELECT
54
+
55
+ *
56
+
57
+ FROM
58
+
59
+ lend
60
+
61
+ LEFT JOIN user ON lend.user_no = user.user_no
62
+
63
+ LEFT JOIN book ON lend.book_no = book.book_no
64
+
65
+ WHERE user.user_id = "sato"
66
+
67
+ ```
68
+
69
+ 試しにこのSQLをMySQL上で実行してみてください。