<br><br><div class="gmail_quote">On Wed, Jan 9, 2013 at 2:21 PM, Brian Granger <span dir="ltr">&lt;<a href="mailto:ellisonbg@gmail.com" target="_blank">ellisonbg@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">On Tue, Jan 8, 2013 at 11:37 PM, Matthias BUSSONNIER<br>
&lt;<a href="mailto:bussonniermatthias@gmail.com">bussonniermatthias@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; I do appreciate the concern, and we need a solution to the issue.<br>
&gt;&gt; I just don&#39;t think we have a complete one yet.<br>
&gt;&gt; Right now, we have a supremely flexible (and thus insecure) situation,<br>
&gt;&gt; whereas jsplugins-only is secure, but not remotely flexible from a user&#39;s perspective.<br>
&gt;&gt;<br>
&gt;&gt; This is an extremely serious incapacitation of the notebook.<br>
&gt;&gt; The trouble is that jsplugins is a relatively tolerable substitue<br>
&gt;&gt; for the single-user notebook, but where the problem is worst<br>
&gt;&gt; is when users don&#39;t actually have access to the server<br>
&gt;&gt; to install jsplugins.  So it&#39;s precisely the case where we<br>
&gt;&gt; would not allow custom js that jsplugins fail most dramatically<br>
&gt;&gt; as a substitute.<br>
&gt;&gt;<br>
&gt;&gt; Is it really our intention to require *server* installation of a plugin<br>
&gt;&gt; for a user to gain access to a new widget? That seems to eliminate a *huge* portion of exactly what makes the notebook interesting.<br>
&gt;&gt;<br>
&gt;&gt; If we have a way that js plugins can be loaded at runtime by the user without access to the server (presumably with a &#39;do you trust this guy?&#39; confirmation),<br>
&gt;&gt; then that would go a long way toward preventing the total castration of the notebook.<br>
&gt;&gt;<br>
&gt;<br>
&gt; The problem is that if we escape javascript in output to prevent js execution at load time we do make<br>
&gt; injecting javascript **script tag** useless in markdown and cell ouput.<br>
<br>
</div>I don&#39;t see any way that we can allow &lt;script&gt; tags in markdown and<br>
HTML output.  Those is the most dangerous case as they are run at<br>
notebook load time and there is no hook for us to prevent that.  All<br>
we can do it strip them.<br></blockquote><div><br></div><div>I really can&#39;t imagine that it will come to this - you are talking about disabling pandas table printing,</div><div>and simple rich text reprs.  That doesn&#39;t seem tenable.  It&#39;s also disabling sized images, since our message spec so far has foolishly excluded shape information for images, etc, or the ability to display any kind of formatting (e.g. two images side-by-side).</div>

<div><br></div><div>We should be able to <a href="http://stackoverflow.com/questions/295566/sanitize-rewrite-html-on-the-client-side">sanitize</a> Javascript from HTML - both in rendered markdown and HTML output data. This, in turn, could allow script detection and give an &#39;unsafe dynamic content, only allow if you trust...&#39; message.</div>

<div><br></div><div>The cost of what you are proposing is *extremely* high.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
&gt; This is a slight difference than displaying javascript with the Javascript object that actually evaluate the string of code.<br>
&gt; It is also dangerous in multi-user context, even if this javascript is not runned at load time.<br>
&gt;<br>
&gt; I think that Json plugin are much better than current structure because one of the first plugin you can write can evaluate javascript<br>
&gt; code, so it actually does the same as Javascript object.<br>
&gt; But, If you design a custom plugin that deal with a specific type of json data, then you get the ability for this data to be used<br>
&gt; at load time as the json repr is stored.<br>
&gt;<br>
&gt; And I do agree that we need to give users a way to still display JS.<br>
&gt;<br>
&gt; I still think we should **strongly** encourage them not to use Javascript object because of it&#39;s inherent evaluation<br>
&gt; which is not stored. It is nice for prototyping, but it does more harm than anything for sharing.<br>
&gt;<br>
&gt; Finally I suppose it will be doable and a good thing to develop the ability to plug those jsplugin to nbviewer.<br>
<br>
</div>Yes, I agree.<br>
<div class="im HOEnZb"><br>
&gt; --<br>
&gt; Matthias<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; IPython-dev mailing list<br>
&gt; <a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
&gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
<br>
<br>
<br>
</div><div class="im HOEnZb">--<br>
Brian E. Granger<br>
Cal Poly State University, San Luis Obispo<br>
<a href="mailto:bgranger@calpoly.edu">bgranger@calpoly.edu</a> and <a href="mailto:ellisonbg@gmail.com">ellisonbg@gmail.com</a><br>
</div><div class="HOEnZb"><div class="h5">_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
</div></div></blockquote></div><br>