質問編集履歴

2

回答後に質問内容の変更が行われたため

2021/08/16 09:50

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Markdownをテンプレートで表示させる際のXSS対策について。
1
+ Djangoで利用者がMarkdownをテンプレートで表示させる際に{{safe}}をした場合のXSS対策について。
test CHANGED
@@ -1,11 +1,37 @@
1
- 通常あれば、エスケ無効にっていますが、これsafeを使うことによりエスケープを解除てい
1
+ Djangoザーマークダウンエディタから簡易的投稿出来るア作成しました
2
2
 
3
- しかし、不特定多数ザーが投稿でき状態では、safeはクロスサイトスクリプテング(XSS)の観点から見て良くないのではと思い
3
+ 以下ようにマクダウンをhtmlに変換すルターを作りした
4
4
 
5
+ ```python
5
6
 
7
+ from django import template
6
8
 
7
- ですが、safeを使わないとマークダウンをHTMLに変換する方法が分かりません。
9
+ from django.template.defaultfilters import stringfilter
8
10
 
9
- 何か良い方法があれば教えて頂きたいです。
11
+ import markdown
10
12
 
13
+
14
+
15
+ register = template.Library()
16
+
17
+
18
+
19
+ @register.filter
20
+
11
- よろしくお願い致します。
21
+ @stringfilter
22
+
23
+ def markdown_html(value):
24
+
25
+ return markdown.markdown(value)
26
+
27
+ ```
28
+
29
+
30
+
31
+ これをテンプレートで以下のようにすれば、マークダウンがHTML表示されます。
32
+
33
+ ```python
34
+
35
+ {{ markdowntxt | markdown_html | safe }}
36
+
37
+ ```

1

情報の修正

2021/08/16 09:50

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Djangoで利用者がMarkdownをテンプレートで表示させる際に{{safe}}をした場合のXSS対策について。
1
+ Markdownをテンプレートで表示させる際のXSS対策について。
test CHANGED
@@ -1,43 +1,3 @@
1
- Djangoでユーザーがマークダウンエディタから簡易的な投稿を出来るアプリを作成しました。
2
-
3
- 以下のようにマークダウンをhtmlに変換するフィルターを作りました。
4
-
5
- ```python
6
-
7
- from django import template
8
-
9
- from django.template.defaultfilters import stringfilter
10
-
11
- import markdown
12
-
13
-
14
-
15
- register = template.Library()
16
-
17
-
18
-
19
- @register.filter
20
-
21
- @stringfilter
22
-
23
- def markdown_html(value):
24
-
25
- return markdown.markdown(value)
26
-
27
- ```
28
-
29
-
30
-
31
- これをテンプレートで以下のようにすれば、マークダウンがHTML表示されます。
32
-
33
- ```python
34
-
35
- {{ markdowntxt | markdown_html | safe }}
36
-
37
- ```
38
-
39
-
40
-
41
1
  通常であれば、エスケープが無効になっていますが、これをsafeを使うことによりエスケープを解除しています。
42
2
 
43
3
  しかし、不特定多数のユーザーが投稿できる状態では、safeはクロスサイトスクリプティング(XSS)の観点から見て良くないのではと思います。