teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

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

2021/08/16 09:50

投稿

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

1

情報の修正

2021/08/16 09:50

投稿

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