<div dir="ltr">OK, I now have a fix that passes all tests, regardless of whether a lenient DateFormat is used. <div><br></div><div>However, I seem to have lost my commit access. Can someone please re-add me? </div><div><br></div><div>Thanks,</div><div>August </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 6, 2014 at 5:39 PM, Kevin W. Wall <span dir="ltr"><<a href="mailto:kevin.w.wall@gmail.com" target="_blank">kevin.w.wall@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">[Apologies for the minor rearrangement to clean up the top posting. -kevin]<br>
<span class=""><br>
On Mon, Oct 6, 2014 at 8:18 PM, August Detlefsen <<a href="mailto:augustd@codemagi.com">augustd@codemagi.com</a>> wrote:<br>
> On Sat, Oct 4, 2014 at 3:28 AM, Fabio Cerullo <<a href="mailto:fcerullo@owasp.org">fcerullo@owasp.org</a>> wrote:<br>
>><br>
>> I belleve August has a point. We cannot handle all date formats that could<br>
>> be represented out there, but we definitely need to make sure the ones we<br>
>> accept are valid.<br>
>><br>
>> Fabio<br>
>><br>
>><br>
>> On Saturday, October 4, 2014, August Detlefsen <<a href="mailto:augustd@codemagi.com">augustd@codemagi.com</a>><br>
>> wrote:<br>
>>><br>
>>> If you want to be able to handle non-date information in your date<br>
>>> parsing, you can specify string literals in SimpleDateFormat by using single<br>
>>> quotes. You just need to create a specific formatter to handle cases like<br>
>>> "Today is October 3, 2014". The format String would look something like<br>
>>> this:<br>
>>><br>
>>> "'Today is' MMMM d, yyyy"<br>
>>><br>
>>> So if someone needed to, they could definitely handle such odd cases with<br>
>>> ESAPI. But IMHO the default should be to strictly validate dates to conform<br>
>>> to the specified format.<br>
<br>
</span>Okay, that's great that Java provides a mechanism to do this, but AFAICT,<br>
ESAPI itself provides no mechanism to do this.  I think again, the question<br>
is *should it*? (Note that this is a quite different argument than what we<br>
should allow the default to be.) If this is doable within ESAPI today, *how*<br>
is it down? (And note, it almost certainly has to be done at the API level<br>
so it can be controlled programmatically and not just through some ESAPI<br>
property regex.)<br>
<span class=""><br>
> Actually, with the code change I proposed, the tests fail. I think this<br>
> actually is due to a flaw in the test methodology itself:<br>
><br>
> The test instantiates a DateFormat like this:<br>
><br>
> DateFormat format = SimpleDateFormat.getDateInstance();<br>
><br>
> SimpleDateFormat.getInstance() will return a lenient date format using<br>
> Java's default 'MEDIUM' pattern. When you format a date with the MEDIUM<br>
> pattern, it returns a String like this:<br>
><br>
> Oct 6, 2014<br>
><br>
> But because the formatter is lenient, it is stall able to parse full dates<br>
> like:<br>
<br>
</span>Ah, there it is. 'Lenient' is the word that I was looking for. I mistakenly<br>
referred to it as 'loose'. Hope that did not confuse anyone.<br>
<span class=""><br>
><br>
> October 6, 2014<br>
><br>
> into a valid Java Date object.<br>
><br>
> In this case, the tests all fail because the input "September 11, 2001" does<br>
> not match the formatted parsed date, "Sep 11, 2001". I could easily change<br>
> the test methodology to use a fully-specified date formatter like:<br>
><br>
> DateFormat format = new SimpleDateFormat("MMMM dd, yyyy");<br>
><br>
> and all tests would pass, BUT, what is the expected operational use case of<br>
> ESAPI? Do we need to support lenient date formats? Or can developers be<br>
> expected to specify full date formats when using ESAPI?<br>
<br>
</span>And that exactly is why I posted, and in fact, asked Nalin Goel and<br>
the two colleagues he is working with to post to *both* ESAPI-Dev and<br>
ESAPI-User mailing lists.<br>
<br>
I think most of us will agree on what the safe (wrt security) defaults are,<br>
but I'm not so convinced that we understand the operational use cases of<br>
developers who happen to be *using* ESAPI, which IMO is quite a different<br>
thing.  We still have not heard from the *user* community on this. Does<br>
that mean no one cares or no one is using these Validator methods?<br>
<span class="HOEnZb"><font color="#888888"><br>
-kevin<br>
</font></span><div class="HOEnZb"><div class="h5">--<br>
Blog: <a href="http://off-the-wall-security.blogspot.com/" target="_blank">http://off-the-wall-security.blogspot.com/</a><br>
NSA: All your crypto bit are belong to us.<br>
</div></div></blockquote></div><br></div>