<html dir="ltr"><head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style>@font-face {
        font-family: Wingdings;
}
@font-face {
        font-family: Cambria Math;
}
@font-face {
        font-family: Calibri;
}
@font-face {
        font-family: Tahoma;
}
@font-face {
        font-family: Book Antiqua;
}
@page Section1 {margin: 1.0in 1.0in 1.0in 1.0in; }
P.MsoNormal {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman","serif"; FONT-SIZE: 12pt
}
LI.MsoNormal {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman","serif"; FONT-SIZE: 12pt
}
DIV.MsoNormal {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman","serif"; FONT-SIZE: 12pt
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline
}
P.MsoAcetate {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Tahoma","sans-serif"; FONT-SIZE: 8pt
}
LI.MsoAcetate {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Tahoma","sans-serif"; FONT-SIZE: 8pt
}
DIV.MsoAcetate {
        MARGIN: 0in 0in 0pt; FONT-FAMILY: "Tahoma","sans-serif"; FONT-SIZE: 8pt
}
P.MsoListParagraph {
        MARGIN: 0in 0in 0pt 0.5in; FONT-FAMILY: "Times New Roman","serif"; FONT-SIZE: 12pt
}
LI.MsoListParagraph {
        MARGIN: 0in 0in 0pt 0.5in; FONT-FAMILY: "Times New Roman","serif"; FONT-SIZE: 12pt
}
DIV.MsoListParagraph {
        MARGIN: 0in 0in 0pt 0.5in; FONT-FAMILY: "Times New Roman","serif"; FONT-SIZE: 12pt
}
SPAN.BalloonTextChar {
        FONT-FAMILY: "Tahoma","sans-serif"
}
SPAN.apple-style-span {
        
}
SPAN.EmailStyle20 {
        FONT-STYLE: normal; FONT-FAMILY: "Book Antiqua","serif"; COLOR: black; FONT-WEIGHT: normal; TEXT-DECORATION: none
}
SPAN.EmailStyle21 {
        FONT-STYLE: normal; FONT-FAMILY: "Book Antiqua","serif"; COLOR: black; FONT-WEIGHT: normal; TEXT-DECORATION: none
}
SPAN.EmailStyle22 {
        FONT-FAMILY: "Calibri","sans-serif"; COLOR: #1f497d
}
.MsoChpDefault {
        FONT-SIZE: 10pt
}
DIV.Section1 {
        
}
OL {
        MARGIN-BOTTOM: 0in
}
UL {
        MARGIN-BOTTOM: 0in
}
</style>
<meta name="GENERATOR" content="MSHTML 8.00.6001.18904">
<style title="owaParaStyle"><!--P {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
--></style>
</head>
<body lang="EN-US" link="blue" bgcolor="white" vlink="purple" ocsi="x">
<div dir="ltr"><font color="#000000" size="2" face="Book Antiqua">
<div dir="ltr"><font color="#000000" size="2" face="Book Antiqua">I guess my larger point is: this instruction &#43; this kind of instruction needs to go into our docs. See how I've now prompted three different answers tackling three different aspects of this one
 single question; this stuff isn't obvious to people based on my anecdotal experience, we need to target the lowest common denominator within reason to promote/facilitate use/adoption.
</font></div>
<div dir="ltr"><font size="2" face="book antiqua"></font>&nbsp;</div>
<div dir="ltr"><font size="2" face="book antiqua">Mike B.</font></div>
<div dir="ltr"><font face="book antiqua"></font>&nbsp;</div>
</font></div>
<div style="DIRECTION: ltr" id="divRpF736199">
<hr tabindex="-1">
<font size="2" face="Tahoma"><b>From:</b> Jeff Williams [jeff.williams@aspectsecurity.com]<br>
<b>Sent:</b> Monday, April 26, 2010 5:41 PM<br>
<b>To:</b> Boberski, Michael [USA]; Jim Manico<br>
<b>Cc:</b> ESAPI-Developers; ESAPI-Users<br>
<b>Subject:</b> RE: [Esapi-dev] [Esapi-user] Has anyone created a &quot;UserEffect&quot; kind of ESAPI control...<br>
</font><br>
</div>
<div></div>
<div>
<div class="Section1">
<p class="MsoNormal"><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt">I like the idea of leveraging the crypto red/black diagram style, but I’m sorry, I don’t get the one below.&nbsp; To me there are only four states…</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt"></span>&nbsp;</p>
<p style="TEXT-INDENT: -0.25in" class="MsoListParagraph"><span style="FONT-FAMILY: Symbol; COLOR: #1f497d; FONT-SIZE: 11pt"><span>·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt">Raw</span></p>
<p style="TEXT-INDENT: -0.25in" class="MsoListParagraph"><span style="FONT-FAMILY: Symbol; COLOR: #1f497d; FONT-SIZE: 11pt"><span>·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt">Canonicalized</span></p>
<p style="TEXT-INDENT: -0.25in" class="MsoListParagraph"><span style="FONT-FAMILY: Symbol; COLOR: #1f497d; FONT-SIZE: 11pt"><span>·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt">Validated</span></p>
<p style="TEXT-INDENT: -0.25in" class="MsoListParagraph"><span style="FONT-FAMILY: Symbol; COLOR: #1f497d; FONT-SIZE: 11pt"><span>·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt">Escaped</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt">But that’s not really that important.&nbsp; There really two important integration questions for preventing injection.</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt"></span>&nbsp;</p>
<p style="TEXT-INDENT: -0.25in" class="MsoListParagraph"><span style="FONT-FAMILY: Symbol; COLOR: #1f497d; FONT-SIZE: 11pt"><span>·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt">How do you hook up ESAPI validation?&nbsp; Here you have to find the place where your framework is doing validation.&nbsp; If it’s extensible (like Struts pluggable
 validators) then you can just use that to plug in ESAPI.&nbsp; If it’s not extensible, then you’ve got an “engineering challenge” – either you have to switch to only ESAPI, or you have to modify the framework.</span></p>
<p class="MsoListParagraph"><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt"></span>&nbsp;</p>
<p style="TEXT-INDENT: -0.25in" class="MsoListParagraph"><span style="FONT-FAMILY: Symbol; COLOR: #1f497d; FONT-SIZE: 11pt"><span>·<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt">How do you hook up ESAPI escaping? Here you have to find all the places where your application emits data that isn’t 100% trusted.&nbsp; Usually this is UI or
 data layer. Then you have to properly escape any data before it leaves.&nbsp; Now if you have a component UI, then you can modify your custom components to use ESAPI escaping.&nbsp; But you’ll also have to check the “standard” components that come with the framework,
 as in most libraries they are horribly inconsistent about escaping.</span></p>
<div>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt">--Jeff</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt"></span>&nbsp;</p>
</div>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt"></span>&nbsp;</p>
<div>
<div style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<p class="MsoNormal"><b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt">From:</span></b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt"> esapi-dev-bounces@lists.owasp.org [mailto:esapi-dev-bounces@lists.owasp.org]
<b>On Behalf Of </b>Boberski, Michael [USA]<br>
<b>Sent:</b> Monday, April 26, 2010 3:51 PM<br>
<b>To:</b> Jim Manico<br>
<b>Cc:</b> ESAPI-Developers; ESAPI-Users<br>
<b>Subject:</b> Re: [Esapi-dev] [Esapi-user] Has anyone created a &quot;UserEffect&quot; kind of ESAPI control...</span></p>
</div>
</div>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">Maybe, a “state” pattern would be one way to provide at least
</span><span style="COLOR: #1f497d">some initial guidance on hooking ESAPI up to frameworks</span><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"> etc. that we can put in our new documentation, something like:</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"><img id="Picture_x0020_6" src="cid:image001.png@01CAE565.7AFE8A80" width="499" height="315"></span></p>
<div>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">Since, there’s nothing equivalent in terms of a picture in “doc-files” or other written guidance along the lines of either of your guys’ responses that I can find.</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">Best,</span><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black"></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">Mike B.</span></p>
</div>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<div>
<div style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<p class="MsoNormal"><b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt">From:</span></b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt"> esapi-user-bounces@lists.owasp.org [mailto:esapi-user-bounces@lists.owasp.org]
<b>On Behalf Of </b>Boberski, Michael [USA]<br>
<b>Sent:</b> Monday, April 26, 2010 1:03 PM<br>
<b>To:</b> Jim Manico<br>
<b>Cc:</b> ESAPI-Developers; ESAPI-Users<br>
<b>Subject:</b> Re: [Esapi-user] Has anyone created a &quot;UserEffect&quot; kind of ESAPI control...</span></p>
</div>
</div>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">Jeff and Jim, thanks.
</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">I think based on your responses, there might be a fourth (maybe more?) “design pattern” related to validation lifecycle as you call it, to be extracted and added here:
<a href="http://code.google.com/p/owasp-esapi-java/wiki/esapi4java_v2_Design_patterns" target="_blank">
http://code.google.com/p/owasp-esapi-java/wiki/esapi4java_v2_Design_patterns</a> </span>
</p>
<div>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">I’ll think about it further…</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">Thanks both,</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">Best,</span><span style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: black"></span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">Mike B.</span></p>
</div>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<div>
<div style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<p class="MsoNormal"><b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt">From:</span></b><span style="FONT-FAMILY: 'Tahoma','sans-serif'; FONT-SIZE: 10pt"> Jim Manico [mailto:jim.manico@owasp.org]
<br>
<b>Sent:</b> Monday, April 26, 2010 11:15 AM<br>
<b>To:</b> Boberski, Michael [USA]<br>
<b>Cc:</b> ESAPI-Users; ESAPI-Developers<br>
<b>Subject:</b> Re: [Esapi-user] Has anyone created a &quot;UserEffect&quot; kind of ESAPI control...</span></p>
</div>
</div>
<p class="MsoNormal">&nbsp;</p>
<div>
<p class="MsoNormal">Mike,</p>
</div>
<div>
<p class="MsoNormal">&nbsp;</p>
</div>
<div>
<p class="MsoNormal">I use the ValidationGroup class to ensure that each validation attempt for each field still&nbsp;<span class="apple-style-span">fires even if the first one fails. Then I check if that list is empty and act accordingly. I pass error messages
 from the controller to the UI via a request attribute - so that the header tile of my app will list the error messages. I also access the error list at my body tile so I can highlight certain fields that are in error.</span></p>
</div>
<div>
<p style="MARGIN-BOTTOM: 12pt" class="MsoNormal">&nbsp;</p>
</div>
<div>
<p class="MsoNormal"><span class="apple-style-span">This is the &quot;full lifecycle&quot; of validation and I think ESAPI covers it well.</span></p>
</div>
<div>
<p style="MARGIN-BOTTOM: 12pt" class="MsoNormal">&nbsp;</p>
</div>
<div>
<p class="MsoNormal"><span class="apple-style-span">Most validation errors are just honest user mistakes - missing a required field or adding a bad character that breaks a regex. &nbsp;</span></p>
</div>
<div>
<p style="MARGIN-BOTTOM: 12pt" class="MsoNormal">&nbsp;</p>
</div>
<div>
<p class="MsoNormal"><span class="apple-style-span">But for validation errors that are extrodinary - I just use the IntrusionDetector.</span></p>
</div>
<div>
<p style="MARGIN-BOTTOM: 12pt" class="MsoNormal">&nbsp;</p>
</div>
<div>
<p class="MsoNormal"><span class="apple-style-span">Forgive me if I'm missing something sir. :) Can you explain to me just one more time were this proposal fits into the validation lifecycle?&nbsp;</span></p>
</div>
<div>
<p class="MsoNormal"><br>
Jim Manico</p>
</div>
<div>
<p style="MARGIN-BOTTOM: 12pt" class="MsoNormal"><br>
On Apr 26, 2010, at 7:56 AM, &quot;Boberski, Michael [USA]&quot; &lt;<a href="mailto:boberski_michael@bah.com">boberski_michael@bah.com</a>&gt; wrote:</p>
</div>
<blockquote style="MARGIN-TOP: 5pt; MARGIN-BOTTOM: 5pt">
<div>
<div>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">… that triggers on failures, regardless of IntrusionDetector use/configuration?</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">E.g., to wrap HTTP 500 error message generation, or e.g. to do a lookup for some kind of context-specific error to display on a user form, and hook this up to other ESAPI controls?</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">E.g.,</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p style="MARGIN-LEFT: 0.5in" class="MsoNormal"><span style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 8pt">if( !validator.isValidXX() ) {</span></p>
<p style="MARGIN-LEFT: 0.5in" class="MsoNormal"><span style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 8pt">&nbsp;&nbsp;&nbsp; ESAPI.effect().rejectUserInput(); //maybe, generate an HTTP 500, cause a form error, ?</span></p>
<p style="MARGIN-LEFT: 0.5in" class="MsoNormal"><span style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 8pt">}</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">This would be towards the end of standardizing how e.g. user input validation failures (ESAPI isWhatever failures and failures causing exceptions to be thrown more generally)
 should be handled. I think by adding an interface to ESAPI might help proactively answer (and promote the wrapping and standardization of security-relevant behaviors inside of ESAPI) what is one of the first questions dev teams ask me on how to use ESAPI.
</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">If I’m missing something obvious, please be kind, and explain what the/a preferred approach
<i>using ESAPI</i> is, to wrap and standardize such things for an application, generally/according to best practices.</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">Best,</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black"></span>&nbsp;</p>
<p class="MsoNormal"><span style="FONT-FAMILY: 'Book Antiqua','serif'; COLOR: black">Mike B.</span></p>
</div>
</div>
</blockquote>
<blockquote style="MARGIN-TOP: 5pt; MARGIN-BOTTOM: 5pt">
<div>
<p class="MsoNormal">_______________________________________________<br>
Esapi-user mailing list<br>
<a href="mailto:Esapi-user@lists.owasp.org">Esapi-user@lists.owasp.org</a><br>
<a href="https://lists.owasp.org/mailman/listinfo/esapi-user" target="_blank">https://lists.owasp.org/mailman/listinfo/esapi-user</a></p>
</div>
</blockquote>
</div>
</div>
</body>
</html>