回答編集履歴
1
追記: データベース
test
CHANGED
@@ -16,3 +16,6 @@
|
|
16
16
|
常に上のようなセットで入出力の処理をすることで、**コンピュータ上のデータ**、**媒体上のバイトの並び**、そしてその間の**シリアライズ/デシリアライズ処理**、といったものがそれぞれ明確に区別され、エスケープ処理の漏れを心配する必要はなくなります。一方、「echoで出力する時点」のような「点」でエスケープの適否を論じる限り、処理漏れへの懸念はなくならないのではないでしょうか。
|
17
17
|
|
18
18
|
具体的な方式としては、データをシリアライズするためのメソッドなりユーティリティ関数なりを用意してデータを出力する際は必ずそれを通して得た結果を出力する、といったことをするといいと思います。長い。
|
19
|
+
|
20
|
+
---
|
21
|
+
[回答後追記] データベースサーバへの問い合わせと結果の取得についても、エスケープ処理が適切に行われないとSQLインジェクションのような脆弱性の原因となりますから、上で述べたのと同様の考慮が必要と言えます。しかしデータベースアクセスではほとんどの場合にクライアントAPIを通じてシリアライズ/デシリアライズ処理が暗黙に行われるため、適切な方法を用いればまず問題にならないです。ご質問の例のようにパラメタ化クエリとバインド変数を使うとか、自前でSQL文を書く代わりにORマッパを使うとか。
|