<div dir="ltr">While acknowledging what Jim is saying is true - that there are many dangerous sinks in JQuery and that Angular has minimized those, I would personally take a slightly different view.  So I thought I'd share to hopefully add to the discussion.<div><br></div><div>Angular is great if you want to do heavy lifting in the client.  If you want a single page app or highly interactive, rich client programming experience then it is definitely something to look at.  I agree with his assertion that React is chasing on its heels, but there are also Ember, Backbone and others.  Angular has made some significant advances in securing what they are doing faster than some of the others, and Jim rightly notes that and gives them kudos that they deserve.  That is one reason it would be great to see the comparison of JS frameworks updated - they are all moving so fast, I couldn't tell you right now if Angular is still ahead in terms of security, I just know they turned the corner and faced the challenge early.</div><div><br></div><div>Still, within the dev community, Angular has a reputation for being powerful but also giving you so much rope that you can hang yourself (which we used to say about C++).  I think the idioms are simpler in some of the other frameworks even if they aren't as powerful.  Some have said that Angular is great for building MVC frameworks, where the others ARE your MVC framework.<br></div><div><br></div><div>Which brings me back to JQuery.  </div><div><br></div><div>It is possible to write a safe app in JQuery.  JQuery apps I've worked with tend to be less rich client side - they use JQuery to make the JS they are doing easy and to do simple Ajaxy things.  If the server is output encoding what JQuery sees, it doesn't matter if JQuery has "unsafe sinks".  So in an app that's Spring + Thymeleaf on the back end, if they don't use utext tags in Thymeleaf or echo user input without making a round trip to the server, its just as safe as Angular.  JQuery is much more widely used than Angular overall and isn't necessarily in a position to write breaking changes the way Angular was.  It also gets used in snippets here and there that aren't so easily dealt with as a framework function.  That doesn't make failure to address security issues ok, but in a big picture you can understand it in better perspective.</div><div><br></div><div>Ultimately, as much as I am a security advocate, I think this is a case where you have to accept nuance and understand the full stack and objectives of the developers and advocate for something that fits both the security and the business need.  </div><div><br></div><div>If I were building a new app intended to be JS heavy, I would use Angular, React, Ember or something like it - provided the dev team working with it was comfortable and productive with it.</div><div><br></div><div>If I were working on a large existing JQuery app, I would identify failure scenarios and fix those within the app.  I wouldn't advocate scrapping the app to move to Angular.  In the case that the failures truly are systemic, a rewrite might be in order.</div><div><br></div><div>In any of those cases, I would advocate for writing tests (Jasmine/Selenium/Cucumber/JBehave, whatever) so that the developers could understand the scenarios that would be problematic.</div><div><br></div><div>Enjoy.</div><div>Matt</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jun 28, 2015 at 3:37 PM, Jim Manico <span dir="ltr"><<a href="mailto:jim.manico@owasp.org" target="_blank">jim.manico@owasp.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div>Almost every "sink" in JQuery is dangerous. </div><div><br></div><div>The safe ones include:</div><div><br></div><div><a href="http://api.jquery.com/text/" target="_blank">http://api.jquery.com/text/</a></div><div>and</div><div><a href="http://api.jquery.com/val/" target="_blank">http://api.jquery.com/val/</a></div><div><br></div><div>Aloha,<span class=""><br><div>--</div><div>Jim Manico</div><div><div><div style="word-wrap:break-word"><div><span style="background-color:rgba(255,255,255,0)">Global Board Member</span></div><span style="background-color:rgba(255,255,255,0)">OWASP Foundation</span><div><a href="https://www.owasp.org/" style="background-color:rgba(255,255,255,0)" target="_blank"><font color="#000000">https://www.owasp.org</font></a></div></div></div><div><span style="background-color:rgba(255,255,255,0)">Join me at <a href="http://appsecusa.org/" target="_blank">AppSecUSA</a> 2015!</span></div></div></span></div><div><div class="h5"><div><br>On Jun 28, 2015, at 8:47 AM, Tim <<a href="mailto:tim.morgan@owasp.org" target="_blank">tim.morgan@owasp.org</a>> wrote:<br><br></div><blockquote type="cite"><div><span></span><br><span>On Sun, Jun 28, 2015 at 10:29:56AM -0400, johanna curiel curiel wrote:</span><br><blockquote type="cite"><span>Dinis</span><br></blockquote><blockquote type="cite"><span>What about Jquery? Many people still using it today, I know a banking app</span><br></blockquote><blockquote type="cite"><span>using it.</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><span></span><br><span>I get the impression that jQuery has a lot of sinks that would trip up</span><br><span>the typical UI developer:</span><br><span>  <a href="https://code.google.com/p/domxsswiki/wiki/jQuery" target="_blank">https://code.google.com/p/domxsswiki/wiki/jQuery</a></span><br><span></span><br><span>tim</span><br><span></span><br><span>_______________________________________________</span><br><span>OWASP-Leaders mailing list</span><br><span><a href="mailto:OWASP-Leaders@lists.owasp.org" target="_blank">OWASP-Leaders@lists.owasp.org</a></span><br><span><a href="https://lists.owasp.org/mailman/listinfo/owasp-leaders" target="_blank">https://lists.owasp.org/mailman/listinfo/owasp-leaders</a></span><br></div></blockquote></div></div></div><br>_______________________________________________<br>
OWASP-Leaders mailing list<br>
<a href="mailto:OWASP-Leaders@lists.owasp.org">OWASP-Leaders@lists.owasp.org</a><br>
<a href="https://lists.owasp.org/mailman/listinfo/owasp-leaders" rel="noreferrer" target="_blank">https://lists.owasp.org/mailman/listinfo/owasp-leaders</a><br>
<br></blockquote></div><br></div>