<html><body bgcolor="#FFFFFF"><div>Great answer at my post on the Spring Framework forums.</div><div><br></div><div>THIS is the type of dialog that we need to establish with developers<br><br>Dinis Cruz</div><div><br>Begin forwarded message:<br><br></div><blockquote type="cite"><div><b>From:</b> "Spring Community Forums" &lt;<a href="mailto:webmaster@springsource.org">webmaster@springsource.org</a>&gt;<br><b>Date:</b> 15 July 2011 10:10:17 GMT+01:00<br><b>To:</b> <a href="mailto:dinis@ddplus.net"><a href="mailto:dinis@ddplus.net">dinis@ddplus.net</a></a><br><b>Subject:</b> <b>Reply to thread 'Security Vulnerabilities with JPetStore and visualization of the AutoBinding Issues'</b><br><br></div></blockquote><div></div><blockquote type="cite"><div><span>Dear Dinis Cruz,</span><br><span></span><br><span>rvelasco has just replied to a thread you have subscribed to entitled - Security Vulnerabilities with JPetStore and visualization of the AutoBinding Issues - in the Security forum of Spring Community Forums.</span><br><span></span><br><span>This thread is located at:</span><br><span><a href="http://forum.springsource.org/showthread.php?111901-Security-Vulnerabilities-with-JPetStore-and-visualization-of-the-AutoBinding-Issues&amp;goto=newpost">http://forum.springsource.org/showthread.php?111901-Security-Vulnerabilities-with-JPetStore-and-visualization-of-the-AutoBinding-Issues&amp;goto=newpost</a></span><br><span></span><br><span>Here is the message that has just been posted:</span><br><span>***************</span><br><span>In my opinion a solution based on "form models" is a valid solution but it is not an effective solution in practice and doesn't follow Spring's philosophy: reduce Java complexity (automating the programmer's job).</span><br><span></span><br><span>This kind of solutions, hand-coded solutions delegated to developers, reminds me the times when we managed JDBC connections by hand. At that time people knew they had to close JDBC connections but always there were cases where someone forgot to close a connection.</span><br><span></span><br><span>Thanks to Spring (SpringJDBC for example), we don't manage JDBC connections (getConnection, closeConnection) by hand any more, and today we never have this kind of problems. In this case the architecture (Spring JDBC) implements the rule automatically and at the same time, we reduce the developer's work.</span><br><span></span><br><span>It's important to note that most web application developers usually don't know about these kind of web vulnerabilities.</span><br><span></span><br><span>I think we should follow Spring's philosophy in order to solve all web vulnerabilities (not only auto binding vulnerability).</span><br><span></span><br><span>How can we solve some of the most important web vulnerabilities automatically?</span><br><span></span><br><span>Many of these vulnerabilities have the same source, users can but they shouldn't:</span><br><span>- Update a parameter value (for example a parameter included within a link,</span><br><span>hidden parameter,..)</span><br><span>- Add a new parameter</span><br><span>- Request an unexpected url</span><br><span>- Update a cookie</span><br><span>-....</span><br><span></span><br><span>In other words, users should edit only editable data (textbox and textarea data) but they can edit and create all kind of data.</span><br><span></span><br><span>This reality creates a big problem for the developers because they must validate all request data by hand, programatically.</span><br><span></span><br><span>At the same time we have another big problem, many developers don't know these web vulnerabilities.</span><br><span></span><br><span>How can we avoid this problem? How can we validate a web request automatically without developers intervention?</span><br><span></span><br><span>Using the programming model offered by Spring MVC (or other web frameworks) developers tell us very important information through web frameworks's tags. In other words, custom tags generate all parameters and urls sent to the client.</span><br><span></span><br><span>If we store this data on the server (for example within HttpSession) and extending web frameworks's tags functionality we can validate a request automatically (some of the most important vulnerabilities). We can validate a request using the data we have stored before.</span><br><span></span><br><span>We have implemented this idea or pattern in HDIV project. HDIV extends Spring MVC, JSF 1, JSF 2, Struts 2, Struts 1, custom tags functionality in order to implement automatically some of the most important security validations.</span><br><span></span><br><span>This idea follows Spring's Philosophy and at the same time the most important security pattern: security by default. It's important to note that HDIV doesn't change Spring MVC programming model and it's applied declaratively using Spring's configuration.</span><br><span></span><br><span>Of course, there are validations like editable data validations (textbox and textare data) that we will have to validate by hand (using whitelists as much as possible) but we can't automatize totally this kind of validations because depends on the application.</span><br><span></span><br><span>In this kind of validations HDIV offers a generic editable validations module that offers a generic validation system for all editable data (data generated on textbox and textarea components).</span><br><span></span><br><span>Regards,</span><br><span></span><br><span>Roberto Velasco</span><br><span>**************</span><br></div></blockquote></body></html>