回答編集履歴
1
質問者のコードのセキュリティ的問題点の解説を加えた。
test
CHANGED
@@ -38,6 +38,10 @@
|
|
38
38
|
|
39
39
|
|
40
40
|
|
41
|
+
(以下、追記: 元のコードでは、`h(@problems)`となっています。したがって、`@problems` の内容にたとえばJavaScriptが紛れ込んでいると、ユーザーの環境でそれが実行されてしまいます。`@problems`はモデル`Problem`で表されるDBテーブルから抽出されています。ほとんどのDBテーブルの値は、何らかの外部入力(多くの場合はフォームなどのユーザー入力)を反映していますから、一般論としては、悪意あるユーザーによってそこに邪悪なコードが紛れ込まれることになる可能性が否定できません。もし現在のアプリの仕様としてその可能性がゼロであれば、現時点ではセキュリティホールにはなりませんね。ただし、仮に現在そうなっていても、一般論として、将来のこのRailsアプリの保守修正においてそうなる可能性を完全否定は難しい、あるいはそれを保証するのは相応の手間です。だから、最初から「安全に」プログラミングしておくことが、推奨されます。端的には、全てリジェクトして、絶対に安全と確証を持てるものだけを通すスタイルです。その一つの例がこの回答でした。)
|
42
|
+
|
43
|
+
|
44
|
+
|
41
45
|
現実には、想定している状況次第で、もっとスマートに書けるでしょう。たとえば、入力文字列の普通の改行コードはすべて`<br>`に変換する、と仮定できるならば、もっとスマートに書けるでしょう。
|
42
46
|
|
43
47
|
質問者が想定している詳しい状況がわからないので、上の例は汎用的に使えるように書いたものです。
|