回答編集履歴
3
改行位置の修正
answer
CHANGED
@@ -11,11 +11,9 @@
|
|
11
11
|
|
12
12
|
- [1.5.1 HTML テキストの入力を許可しない場合の対策 - 安全なウェブサイトの作り方 第7版 (pdf)](https://www.ipa.go.jp/files/000017316.pdf#page=26)
|
13
13
|
|
14
|
-
> ウェブページを構成する要素として、ウェブページの本文や HTML タグの属性値等に相当する全て
|
14
|
+
> ウェブページを構成する要素として、ウェブページの本文や HTML タグの属性値等に相当する全ての出力要素にエスケープ処理を行います。
|
15
|
-
の出力要素にエスケープ処理を行います。エスケープ処理には、ウェブページの表示に影響する特別
|
16
|
-
な記号文字(「<」、「>」、「&」等)を、HTML エンティティ(「<」、「>」、「&」等)に置換する方法が
|
15
|
+
> エスケープ処理には、ウェブページの表示に影響する特別な記号文字(「<」、「>」、「&」等)を、HTML エンティティ(「<」、「>」、「&」等)に置換する方法があります。
|
17
|
-
あります。また、HTML タグを出力する場合は、その属性値を必ず「"」(ダブルクォート)で括るようにし
|
18
|
-
ます。そして、「"」で括られた属性値に含まれる「"」を、HTML エンティティ「"」にエスケープします。
|
16
|
+
> また、HTML タグを出力する場合は、その属性値を必ず「"」(ダブルクォート)で括るようにします。そして、「"」で括られた属性値に含まれる「"」を、HTML エンティティ「"」にエスケープします。
|
19
17
|
|
20
18
|
※IPAでは触れていませんが、IEには**バッククォートを属性値の引用符として扱う仕様**が存在しています。
|
21
19
|
|
2
markdown
answer
CHANGED
@@ -21,10 +21,9 @@
|
|
21
21
|
|
22
22
|
- [IE 属性値 バッククォート - Google 検索](https://www.google.com/search?q=IE+%E5%B1%9E%E6%80%A7%E5%80%A4+%E3%83%90%E3%83%83%E3%82%AF%E3%82%AF%E3%82%A9%E3%83%BC%E3%83%88)
|
23
23
|
|
24
|
-
###
|
24
|
+
### エスケープのタイミング
|
25
25
|
|
26
26
|
> 私の作成したアプリでは、データベース保存時にエスケープをしていて、
|
27
|
-
「/」以外の5種類全てをエスケープしてしまうと、マークダウンによるコードの表示が出来なくなってしまうからです。
|
28
27
|
|
29
28
|
データベースに格納された文字も「外部から来る文字」ですので、信用してはいけません。
|
30
29
|
**HTMLエスケープはHTML出力する直前に行うもの**です。
|
@@ -37,4 +36,14 @@
|
|
37
36
|
出力するすべてに対してエスケープ処理を施すよう、一貫したコーディングをすることで、対策漏れ17を
|
38
37
|
防止することができます。
|
39
38
|
|
39
|
+
---
|
40
|
+
|
41
|
+
> 「/」以外の5種類全てをエスケープしてしまうと、マークダウンによるコードの表示が出来なくなってしまうからです。
|
42
|
+
|
43
|
+
markdown文字列のparse時にはエスケープする必要はありません。
|
44
|
+
HTMLに変換するタイミングでHTMLエスケープを行います。
|
45
|
+
|
46
|
+
1. markdownからHTMLへの変換処理
|
47
|
+
2. 入力されたHTML文字列を出力文字列に変換する処理(※HTML入力を受け付けるmarkdownの場合)
|
48
|
+
|
40
49
|
Re: wsdwe さん
|
1
バッククォート
answer
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
あります。また、HTML タグを出力する場合は、その属性値を必ず「"」(ダブルクォート)で括るようにし
|
18
18
|
ます。そして、「"」で括られた属性値に含まれる「"」を、HTML エンティティ「"」にエスケープします。
|
19
19
|
|
20
|
-
※IPAでは触れていませんが、
|
20
|
+
※IPAでは触れていませんが、IEには**バッククォートを属性値の引用符として扱う仕様**が存在しています。
|
21
21
|
|
22
22
|
- [IE 属性値 バッククォート - Google 検索](https://www.google.com/search?q=IE+%E5%B1%9E%E6%80%A7%E5%80%A4+%E3%83%90%E3%83%83%E3%82%AF%E3%82%AF%E3%82%A9%E3%83%BC%E3%83%88)
|
23
23
|
|