<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    ESAPI community,<br>
    <br>
    I am very concerned about the design of the ESAPI validation layer
    and how it handles canonicalization for API's like:<br>
    <br>
    <meta charset="utf-8">
    <code style="color: rgb(0, 0, 0); font-style: normal; font-variant:
      normal; font-weight: normal; letter-spacing: normal; line-height:
      normal; orphans: auto; text-align: start; text-indent: 0px;
      text-transform: none; white-space: normal; widows: auto;
      word-spacing: 0px; -webkit-text-stroke-width: 0px;
      background-color: rgb(255, 255, 255);"><b><a
href="https://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/reference/DefaultValidator.html#isValidInput%28java.lang.String,%20java.lang.String,%20java.lang.String,%20int,%20boolean%29">isValidInput</a></b>(java.lang.String context,
      java.lang.String input, java.lang.String type, int maxLength,
      boolean allowNull)</code><span style="color: rgb(0, 0, 0);
      font-family: Times; font-size: medium; font-style: normal;
      font-variant: normal; font-weight: normal; letter-spacing: normal;
      line-height: normal; orphans: auto; text-align: start;
      text-indent: 0px; text-transform: none; white-space: normal;
      widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;
      display: inline !important; float: none; background-color:
      rgb(255, 255, 255);"><span class="Apple-converted-space"> </span></span><br>
    <br>
    Right now, before validation, ESAPI will try to decode user input to
    it's normalized form and THEN it will try to validate the input.
<a class="moz-txt-link-freetext" href="http://owasp-esapi-java.googlecode.com/svn/trunk/src/main/java/org/owasp/esapi/reference/validation/StringValidationRule.java">http://owasp-esapi-java.googlecode.com/svn/trunk/src/main/java/org/owasp/esapi/reference/validation/StringValidationRule.java</a><br>
    <br>
    This seems rather dangerous in that encoded attacks will be "fixed"
    and will not alert of potential malicious input. If input is
    detected to be encoded, then I would suggest that we throw an
    IntrusionDetectionException and stop processing. Why do we "clean
    up" encoded data and then validate in these API's?<br>
    <br>
    Aloha,<br>
    Jim<br>
    <br>
    PS: You certainly can disable canonicalization as it stands today
    via:<br>
    <br>
     
    <meta charset="utf-8">
    <code style="color: rgb(0, 0, 0); font-style: normal; font-variant:
      normal; font-weight: normal; letter-spacing: normal; line-height:
      normal; orphans: auto; text-align: start; text-indent: 0px;
      text-transform: none; white-space: normal; widows: auto;
      word-spacing: 0px; -webkit-text-stroke-width: 0px;
      background-color: rgb(255, 255, 255);"><b><a
href="https://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/reference/DefaultValidator.html#isValidInput%28java.lang.String,%20java.lang.String,%20java.lang.String,%20int,%20boolean,%20boolean%29">isValidInput</a></b>(java.lang.String context,
      java.lang.String input, java.lang.String type, int maxLength,
      boolean allowNull, <u><b>boolean canonicalize</b></u>)</code><span
      style="color: rgb(0, 0, 0); font-family: Times; font-size: medium;
      font-style: normal; font-variant: normal; font-weight: normal;
      letter-spacing: normal; line-height: normal; orphans: auto;
      text-align: start; text-indent: 0px; text-transform: none;
      white-space: normal; widows: auto; word-spacing: 0px;
      -webkit-text-stroke-width: 0px; display: inline !important; float:
      none; background-color: rgb(255, 255, 255);"><span
        class="Apple-converted-space"> </span></span><br>
    <br>
  </body>
</html>