<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I disagree slightly.<div><br></div><div>The problem I've noticed on the banking side is that you often have multiple development teams over the lifespan of a project. This could be due to a number of factors, but one thing that is given is that the same developer which started the project often isn't around 3 months later. I've noticed a massive amount of vulnerabilities due to the developers not knowing what was going on, which is also due to badly written code, but also the lack of any documentation or guidance.&nbsp;</div><div><br></div><div>Now your comment about unit tests and integration tests is valid and one that should be included.</div><div><br></div><div>Documentation and correctly written code are both equally important.&nbsp;</div><div><br></div><div><br><div><div>On 15 Dec 2008, at 5:24 PM, Erlend Oftedal wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><div lang="EN-US" link="blue" vlink="purple"><div class="Section1"><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; ">Hi Paolo<o:p></o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; "><o:p>&nbsp;</o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; ">This is an interesting project, which I hope will be successful.<o:p></o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; "><o:p>&nbsp;</o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; ">I have some comments:<o:p></o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; ">“C3 – Missing input validation” – I would call this “Missing input validation and output encoding”. It’s not always possible to filter out dangerous characters from the input. Consider the name O’Brian. It contains a quote (‘) which might be considered dangerous (SQL-injection) and filtered out. However it’s actually a part of the name, and we should thus store it. So the correct way to handle this character would be to encode it when sending the data to the SQL-server. Best practices here would be to use parameterized queries or in the case of missing language support, escape it yourself. However this is not a part of input validation. It’s something developers should do where they create the SQL-statement.<o:p></o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; ">The same logic can be used for XSS.<o:p></o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; ">Please not that I’m not saying input validation is useless. I just think both are necessary.<o:p></o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; "><o:p>&nbsp;</o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; ">&nbsp;“C9 - Documentation weakness” – I don’t think that documentation is the issue here. In my opinion, writing maintainable code is not about documenting your code, but about writing code that others can read. If you look to coding gurus like Robert C. Martin (author of books such as “Clean Code”), he says "Obviously, there are times when you must write a comment but I want those times to be few and far between and if I find myself writing a comment because I've got no other option, I kick myself. It's a failure of my ability to express myself well in code."<o:p></o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; ">The idea &nbsp;is to use short methods (easy to get an overview), good method and variable naming, and good object oriented design (using design principles like the Single-Responsibility-Principle) to reduce the complexity of the code.<o:p></o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; ">Documentation and comments has a tendency to lie, because when developers are short on time (which they often are because of management or customer pressure), they tend to fix the code without updating the comments. In this case the documentation will lie, which is a lot worse than no documentation at all. However the code does not lie. The best documentation you can have, is in the form of unit tests and integration tests, because the documentation/specification is then executable. So my suggestion for C9 would be: “C9 – Readability” or “C9 – Unreadable code”.<o:p></o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; ">While on the subject of testing, “CX – Untested code” could be another item in you list.<o:p></o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; "><o:p>&nbsp;</o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; "><o:p>&nbsp;</o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; ">Best regards<o:p></o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; ">Erlend Oftedal<o:p></o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; ">OWASP Norway<o:p></o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; "><o:p>&nbsp;</o:p></span></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Georgia, serif; "><o:p>&nbsp;</o:p></span></div><div style="border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-top-style: solid; border-top-color: rgb(181, 196, 223); border-top-width: 1pt; padding-top: 3pt; padding-right: 0cm; padding-bottom: 0cm; padding-left: 0cm; "><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><b><span style="font-size: 10pt; font-family: Tahoma, sans-serif; ">Fra:</span></b><span style="font-size: 10pt; font-family: Tahoma, sans-serif; "><span class="Apple-converted-space">&nbsp;</span><a href="mailto:owasp-leaders-bounces@lists.owasp.org" style="color: blue; text-decoration: underline; ">owasp-leaders-bounces@lists.owasp.org</a><span class="Apple-converted-space">&nbsp;</span>[<a href="mailto:owasp-leaders-bounces@lists.owasp.org" style="color: blue; text-decoration: underline; ">mailto:owasp-leaders-bounces@lists.owasp.org</a>]<span class="Apple-converted-space">&nbsp;</span><b>På vegne av</b><span class="Apple-converted-space">&nbsp;</span>Paolo Perego<br><b>Sendt:</b><span class="Apple-converted-space">&nbsp;</span>15. desember 2008 15:11<br><b>Til:</b><span class="Apple-converted-space">&nbsp;</span>Owasp leaders<br><b>Emne:</b><span class="Apple-converted-space">&nbsp;</span>[Owasp-leaders] Owasp Source Code Flaws Top 10 Project<o:p></o:p></span></div></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p>&nbsp;</o:p></div><div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">Hello leaders, I'm really happy to announce a new documentation project I started today. Our Top 10 most critical web app vulnerabilities is the standard de facto when trying to summarize findings when you assess a web application. And it is great.<o:p></o:p></div></div><div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p>&nbsp;</o:p></div></div><div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">Looking at source code assessment (or code review, or static analysis, or whatever the name you want to use :-)), nothing like this exists. Gary McGraw introduced the 7 kingdoms as taxonomy. I started looking at this great job extending it to meet Owasp Top 10 like template.<o:p></o:p></div></div><div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">I also used categories that I found useful to gather security code review findings in.<o:p></o:p></div></div><div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p>&nbsp;</o:p></div></div><div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">That's why I started this Top 10 project. The goal is to provide something useful in Owasp Code Review Guide while trying to organize security issues and the second goal is to use it as Owasp Orizon default library cookbooks in order to have a "fil rouge" from Code review guide and the implementing tool. The Source code flaws Top 10 will be that fil rouge.<o:p></o:p></div></div><div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p>&nbsp;</o:p></div></div><div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">I really hope that everyone interested will subscribe to mailing list and give some contributions to this document I'd like to release as beta quality project in the next AppSec Europe 2009 in Cracow.<o:p></o:p></div></div><div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p>&nbsp;</o:p></div></div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">Link:<span class="Apple-converted-space">&nbsp;</span><a href="http://www.owasp.org/index.php/Category:OWASP_Source_Code_Flaws_Top_10_Project" style="color: blue; text-decoration: underline; ">http://www.owasp.org/index.php/Category:OWASP_Source_Code_Flaws_Top_10_Project</a><br clear="all">Roadmap:&nbsp;<a href="http://www.owasp.org/index.php/Category:OWASP_Source_Code_Flaws_Top_10_Project_Roadmap" style="color: blue; text-decoration: underline; ">http://www.owasp.org/index.php/Category:OWASP_Source_Code_Flaws_Top_10_Project_Roadmap</a><o:p></o:p></div><div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">Mailinglist subscription page:&nbsp;<a href="https://lists.owasp.org/mailman/listinfo/owasp-source-code-flaws-top-10" style="color: blue; text-decoration: underline; ">https://lists.owasp.org/mailman/listinfo/owasp-source-code-flaws-top-10</a><o:p></o:p></div></div><div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p>&nbsp;</o:p></div></div><div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">Regards<o:p></o:p></div></div><div><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">thesp0nge<br>--<span class="Apple-converted-space">&nbsp;</span><br>"stay hungry, stay foolish"<br><br>OWASP Orizon project,<span class="Apple-converted-space">&nbsp;</span><a href="http://orizon.sourceforge.net" style="color: blue; text-decoration: underline; ">http://orizon.sourceforge.net</a><br>"enjoy your code review experience"<o:p></o:p></div></div></div>_______________________________________________<br>OWASP-Leaders mailing list<br><a href="mailto:OWASP-Leaders@lists.owasp.org" style="color: blue; text-decoration: underline; ">OWASP-Leaders@lists.owasp.org</a><br><a href="https://lists.owasp.org/mailman/listinfo/owasp-leaders" style="color: blue; text-decoration: underline; ">https://lists.owasp.org/mailman/listinfo/owasp-leaders</a><br></div></span></blockquote></div><br></div></body></html>