Skip to content

Commit ac377b8

Browse files
committed
fixed issue #130 (add new EscapeHtml extension to handle the XSS vulnerabilities)
1 parent 8cdc30c commit ac377b8

File tree

4 files changed

+28
-18
lines changed

4 files changed

+28
-18
lines changed

README.rst

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,6 @@ to get ``IMGUR_CLIENT_ID`` and ``IMGUR_API_KEY``.
137137
MARTOR_IMGUR_CLIENT_ID = 'your-client-id'
138138
MARTOR_IMGUR_API_KEY = 'your-api-key'
139139

140-
# Safe Mode
141-
MARTOR_MARKDOWN_SAFE_MODE = True # default
142-
143140
# Markdownify
144141
MARTOR_MARKDOWNIFY_FUNCTION = 'martor.utils.markdownify' # default
145142
MARTOR_MARKDOWNIFY_URL = '/martor/markdownify/' # default
@@ -153,10 +150,11 @@ to get ``IMGUR_CLIENT_ID`` and ``IMGUR_API_KEY``.
153150

154151
# Custom markdown extensions.
155152
'martor.extensions.urlize',
156-
'martor.extensions.del_ins', # ~~strikethrough~~ and ++underscores++
157-
'martor.extensions.mention', # to parse markdown mention
158-
'martor.extensions.emoji', # to parse markdown emoji
159-
'martor.extensions.mdx_video', # to parse embed/iframe video
153+
'martor.extensions.del_ins', # ~~strikethrough~~ and ++underscores++
154+
'martor.extensions.mention', # to parse markdown mention
155+
'martor.extensions.emoji', # to parse markdown emoji
156+
'martor.extensions.mdx_video', # to parse embed/iframe video
157+
'martor.extensions.escape_html', # to handle the XSS vulnerabilities
160158
]
161159

162160
# Markdown Extensions Configs

martor/extensions/escape_html.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
import markdown
3+
4+
5+
class EscapeHtml(markdown.Extension):
6+
7+
def extendMarkdown(self, md):
8+
md.preprocessors.deregister('html_block')
9+
md.inlinePatterns.deregister('html')
10+
11+
12+
def makeExtension(*args, **kwargs):
13+
return EscapeHtml(*args, **kwargs)
14+
15+
16+
if __name__ == "__main__":
17+
import doctest
18+
doctest.testmod()

martor/settings.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,6 @@
3737
settings, 'MARTOR_IMGUR_API_KEY', ''
3838
)
3939

40-
# Safe Mode
41-
MARTOR_MARKDOWN_SAFE_MODE = getattr(
42-
settings, 'MARTOR_MARKDOWN_SAFE_MODE', True
43-
)
44-
4540
# Markdownify
4641
MARTOR_MARKDOWNIFY_FUNCTION = getattr(
4742
settings, 'MARTOR_MARKDOWNIFY_FUNCTION', 'martor.utils.markdownify'
@@ -60,10 +55,11 @@
6055

6156
# Custom markdown extensions.
6257
'martor.extensions.urlize',
63-
'martor.extensions.del_ins', # ~~strikethrough~~ and ++underscores++
64-
'martor.extensions.mention', # to parse markdown mention
65-
'martor.extensions.emoji', # to parse markdown emoji
66-
'martor.extensions.mdx_video', # to parse embed/iframe video
58+
'martor.extensions.del_ins', # ~~strikethrough~~ and ++underscores++
59+
'martor.extensions.mention', # to parse markdown mention
60+
'martor.extensions.emoji', # to parse markdown emoji
61+
'martor.extensions.mdx_video', # to parse embed/iframe video
62+
'martor.extensions.escape_html', # to handle the XSS vulnerabilities
6763
]
6864
)
6965

martor/utils.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import markdown
66
from .settings import (
7-
MARTOR_MARKDOWN_SAFE_MODE,
87
MARTOR_MARKDOWN_EXTENSIONS,
98
MARTOR_MARKDOWN_EXTENSION_CONFIGS
109
)
@@ -28,7 +27,6 @@ def markdownify(markdown_content):
2827
try:
2928
return markdown.markdown(
3029
markdown_content,
31-
safe_mode=MARTOR_MARKDOWN_SAFE_MODE,
3230
extensions=MARTOR_MARKDOWN_EXTENSIONS,
3331
extension_configs=MARTOR_MARKDOWN_EXTENSION_CONFIGS
3432
)

0 commit comments

Comments
 (0)