Skip to content

Commit

Permalink
#29 fix xss vulnerable
Browse files Browse the repository at this point in the history
  • Loading branch information
ondratu committed May 23, 2021
1 parent 44ea00f commit a357422
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
14 changes: 14 additions & 0 deletions formiko/renderer.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,8 +237,12 @@ def __init__(self, win, parser='rst', writer='html4', style=''):
self.webview.connect("mouse-target-changed", self.on_mouse)
self.webview.connect("context-menu", self.on_context_menu)
self.webview.connect("button-release-event", self.on_button_release)
self.webview.connect("load-changed", self.on_load_changed)
self.add(self.webview)

settings = self.webview.get_settings()
settings.set_enable_javascript_markup(False) # XSS Fix

controller = self.webview.get_find_controller()
self.search_done = None
controller.connect("found-text", self.on_found_text)
Expand Down Expand Up @@ -415,6 +419,7 @@ def render_output(self):

def do_render(self):
state, html, mime_type = self.render_output()
"""
if state:
if self.pos > 1: # vim
a, b = len(self.src[:self.pos]), len(self.src[self.pos:])
Expand All @@ -423,10 +428,15 @@ def do_render(self):
position = self.pos
html += SCROLL % position
"""
if html and self.__win.runing:
file_name = self.file_name or get_home_dir()
self.webview.load_bytes(Bytes(html.encode("utf-8")),
mime_type, "UTF-8", "file://"+file_name)
if state:
self.scroll_to_position(self.pos)
else:
print("no scroll")

def render(self, src, file_name, pos=0):
self.src = src
Expand Down Expand Up @@ -489,4 +499,8 @@ def scroll_to_position(self, position):
else:
position = self.pos

print('position', position)
self.webview.run_javascript(JS_SCROLL % position, None, None, None)

def on_load_changed(self, webview, event):
print('load-changed event:', event)
1 change: 1 addition & 0 deletions formiko/window.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@ def on_file_type(self, widget, ext):
self.pref_menu.set_parser(parser)

def on_scroll_changed(self, widget, position):
print("on scroll changed position: ", position)
if self.preferences.auto_scroll:
self.renderer.scroll_to_position(position)

Expand Down

0 comments on commit a357422

Please sign in to comment.