回答編集履歴

4

追記

2016/11/26 12:03

投稿

退会済みユーザー
test CHANGED
@@ -339,3 +339,83 @@
339
339
  </html>
340
340
 
341
341
  ```
342
+
343
+
344
+
345
+ ---
346
+
347
+
348
+
349
+ #追記
350
+
351
+
352
+
353
+ > ①// 配列の初期化 $arr = [];  // パラメータをセットする $arr[':id'] = $id;
354
+
355
+ です。そもそもこういう処理自体初見に近いです。
356
+
357
+
358
+
359
+ この記述なら、みたことあるのではないでしょうか?
360
+
361
+
362
+
363
+ ```php
364
+
365
+ $arr = array();
366
+
367
+ $arr[':id'] = $id;
368
+
369
+ ```
370
+
371
+
372
+
373
+ ```php
374
+
375
+ $arr = array();
376
+
377
+ ```
378
+
379
+
380
+
381
+ ```php
382
+
383
+ $arr = [];
384
+
385
+ ```
386
+
387
+ は同じことを行なっています。 `[]` はPHP5.4以上で可能になった書き方です。
388
+
389
+
390
+
391
+
392
+
393
+ > ②html内の出力もすごいですね。ifで0以上なら(if(!empty)出力もあり?)…foreachでぶん回してhtml...(←特殊をhtmlに変換でしたっけ‥?)で出力でしょうか??
394
+
395
+ (他にも細かいこと聞いたらきりがなさそうです。)
396
+
397
+
398
+
399
+ この `if` の条件式がないと、
400
+
401
+
402
+
403
+ ```html
404
+
405
+ <table>
406
+
407
+ </table>
408
+
409
+ ```
410
+
411
+
412
+
413
+ という、HTMLとして不十分な出力になってしまいますよね。
414
+
415
+
416
+
417
+ > 画像を出力するときも
418
+
419
+
420
+
421
+ そうです。基本的に、PHPの「変数」を echo 及び print で出力するときにはすべて htmlspecialchars 関数を通します。

3

追記

2016/11/26 12:03

投稿

退会済みユーザー
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ```php
6
6
 
7
- htmlspecialchars($row['id']);
7
+ htmlspecialchars($row['id']); // なんのためにいれたの?
8
8
 
9
9
  echo "<a href='xxxxxxxxx.php?id={$id}'>".$row['title']."</a>";?> // $id ってどこからきたの?
10
10
 

2

修正

2016/11/26 09:23

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,32 @@
1
+ 明らかな間違いが
2
+
3
+
4
+
5
+ ```php
6
+
7
+ htmlspecialchars($row['id']);
8
+
9
+ echo "<a href='xxxxxxxxx.php?id={$id}'>".$row['title']."</a>";?> // $id ってどこからきたの?
10
+
11
+ ```
12
+
13
+
14
+
15
+ ですね。
16
+
17
+
18
+
19
+ ```php
20
+
21
+ $id = htmlspecialchars($row['id']);
22
+
23
+ echo "<a href='xxxxxxxxx.php?id={$id}'>".$row['title']."</a>";?>
24
+
25
+ ```
26
+
27
+
28
+
1
- セキュリティ問題な提示されたコードに関しては、発生しません。セキュリティの面で言えば、省略されている部分に十羽ような点がありますので、サンプルコードを元に説明します。
29
+ セキュリティの面で言えば、省略されている部分に重要な点がありますので、サンプルコードを元に説明します。
2
30
 
3
31
 
4
32
 

1

修正

2016/11/26 09:22

投稿

退会済みユーザー
test CHANGED
@@ -162,6 +162,14 @@
162
162
 
163
163
 
164
164
 
165
+ // デバッグ(開発)時は必ず記述する
166
+
167
+ ini_set('display_errors', true);
168
+
169
+ error_reporting(E_ALL);
170
+
171
+
172
+
165
173
  /**
166
174
 
167
175
  * XSS対策
@@ -184,14 +192,6 @@
184
192
 
185
193
  try {
186
194
 
187
- // デバッグ(開発)時は必ず記述する
188
-
189
- ini_set('display_errors', true);
190
-
191
- error_reporting(E_ALL);
192
-
193
-
194
-
195
195
  // DSNには必ず文字コードの指定をする
196
196
 
197
197
  $dsn = 'mysql:host=localhost;dbname=test;charset=utf8;';