Lee Moon Soo created ZEPPELIN-5261:
--------------------------------------

             Summary: Sandbox HTML result rendering
                 Key: ZEPPELIN-5261
                 URL: https://issues.apache.org/jira/browse/ZEPPELIN-5261
             Project: Zeppelin
          Issue Type: Improvement
          Components: GUI
    Affects Versions: 0.9.0
            Reporter: Lee Moon Soo


Zeppelin display system allows users to render arbitrary HTML results inside a 
Note. This includes Javascript inlined in the HTML data to be rendered.

It can be used for a potential xss attack, when a user open a shared notebook 
from another user, which includes an exploit code inside HTML result in the 
Note.

 

There could a couple of different approaches to prevent this

 

a. Don't render HTML results unless the user explicitly 'trust' the Note.

    In this way, when a Note includes HTML results, Zeppelin UI can ask the 
user if user want to trust and render HTML result or not.

b. Sandbox HTML result rendering using iframe

    In this way, HTML result is rendered inside an iframe came from different 
domain. Because browser's xss protection, it prevents potential exploits 
rendered in iframe access to any data in the parent window (Zeppelin). This 
approach is implemented in Google Colab.

 

IMO, (b) is more favorable while it makes security depends on 'trust' of a 
user. However, there's some expected complexity on implementation and 
configuration, such as
 * Passing result data to render from parent window to the iframe came from a 
different domain
 * Automatically resize iframe based on its content
 * client webbrowser should able to access Iframe domain. Or should able to 
configure an alternative domain to load iframe source.

 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to