<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
  </head>
  <body bgcolor="#ffffff" text="#000000">
    <span id="IDstID"><font size="-1"><font face="Helvetica, Arial,
          sans-serif">Jim,<br>
          <br>
          There are really two different scenarios that I'm attempting
          to resolve path manipulation vulnerabilities in.<br>
          <br>
          The first is when we are simply opening an existing file. In
          most cases, the files are configuration files, typically XML,
          where the path of the 'common' directory is system
          configurable. In my situation, I may have a dozen nodes
          participating in a cluster and sharing a common file system.
          The common file system may be a completely different mount
          point than where the software is installed. Therefore, the
          common directory is configurable, but the filenames of the
          configuration files are always the same.<br>
          <br>
          The second scenario is when when perform a directory listing
          and for each file in the directory we check to see if the file
          validates against a known XML schema. If so, then we need to
          process the file. The directory where this pickup is located
          is configurable, and the file names are unknown at runtime. In
          fact, the filenames and their content will constantly be
          changing. Think of a trading system where documents keep on
          coming into and out of the system on a regular basis (100 docs
          per second per node typically)<br>
          <br>
          In both cases, we are already validating the content inside
          the file against a schema and use some of the helper methods
          in the esapi jar to verify that elements conform to their
          expected type and the content of the files are properly
          escaped.<br>
          <br>
          <br>
          <br>
        </font></font><br>
      <font size="-1" face="Arial">
        <hr><strong>From:</strong> Jim Manico
        <a class="moz-txt-link-rfc2396E" href="mailto:jim.manico@owasp.org">&lt;jim.manico@owasp.org&gt;</a><br>
        <strong>Sent:</strong> Sat, 13 Nov 2010 23:35:36 -1000<br>
        <strong>To:</strong> 'Springett Steven'
        <a class="moz-txt-link-rfc2396E" href="mailto:sspringett@us.axway.com">&lt;sspringett@us.axway.com&gt;</a>, <a class="moz-txt-link-abbreviated" href="mailto:esapi-user@lists.owasp.org">esapi-user@lists.owasp.org</a><br>
        <strong>Cc:</strong> <br>
        <strong>Subject:</strong> RE: [Esapi-user] Path Manipulation
        Validation<br>
      </font><br>
    </span>
    <blockquote cite="mid:4cdfad79.14a7960a.7c13.ffff87f1@mx.google.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <meta name="Generator" content="Microsoft Word 12 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
..MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;">&gt; If I'm
            attempting to open a file, then it is my assumption that the
            getValidFileName should be used. Is this assumption correct?
            <o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;">Saving a
            file, yes. But opening a file? It depends on the situation.
            Can you tell us more about the architecture of the feature
            you are trying to fix?<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;">When I write
            FileIO code with user-driven files, I try to never let user
            data drive FileIO commands. For example, if the user is
            submitting a file upload, I create a new random file name
            and save the file in a private directory using this new file
            name that I created. I validate and use the <i>original</i>
            file name just for a user reference. Make sense?<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;">&gt; When is
            a good time to use getValidDirectoryPath?<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;">I can
            normally get away with never letting the user drive a path
            as well. For example, I might create a folder based on the
            userId (a private internal piece of data) lookup the file
            based on a fileID that I created at upload time. But can you
            tell us more about this feature? It will be easier to
            provide good advice&#8230;<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;"><o:p>&nbsp;</o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;">- Jim</span><span
            style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-size: 11pt; font-family:
            &quot;Calibri&quot;,&quot;sans-serif&quot;; color: rgb(31,
            73, 125);"><o:p>&nbsp;</o:p></span></p>
        <div>
          <div style="border-right: medium none; border-width: 1pt
            medium medium; border-style: solid none none; border-color:
            rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color;
            padding: 3pt 0in 0in;">
            <p class="MsoNormal"><b><span style="font-size: 10pt;
                  font-family:
                  &quot;Tahoma&quot;,&quot;sans-serif&quot;; color:
                  windowtext;">From:</span></b><span style="font-size:
                10pt; font-family:
                &quot;Tahoma&quot;,&quot;sans-serif&quot;; color:
                windowtext;"> <a class="moz-txt-link-abbreviated" href="mailto:esapi-user-bounces@lists.owasp.org">esapi-user-bounces@lists.owasp.org</a>
                [<a class="moz-txt-link-freetext" href="mailto:esapi-user-bounces@lists.owasp.org">mailto:esapi-user-bounces@lists.owasp.org</a>] <b>On
                  Behalf Of </b>Springett Steven<br>
                <b>Sent:</b> Monday, November 08, 2010 10:51 AM<br>
                <b>To:</b> <a class="moz-txt-link-abbreviated" href="mailto:esapi-user@lists.owasp.org">esapi-user@lists.owasp.org</a><br>
                <b>Subject:</b> [Esapi-user] Path Manipulation
                Validation<o:p></o:p></span></p>
          </div>
        </div>
        <p class="MsoNormal"><o:p>&nbsp;</o:p></p>
        <p class="MsoNormal"><span style="font-size: 10pt; font-family:
            &quot;Helvetica&quot;,&quot;sans-serif&quot;;">Hello all,<br>
            <br>
            I'm attempting to remove many path manipulation
            vulnerabilities in some code.<br>
            <br>
            I've been playing with DefaultValidator and the
            getValidFileName and getValidDirectoryPath methods and need
            some clarity.<br>
            <br>
            If I'm attempting to open a file, then it is my assumption
            that the getValidFileName should be used. Is this assumption
            correct? When is a good time to use getValidDirectoryPath?<br>
            <br>
            Also, I'm looking at the Javadoc for getValidDirectoryPath
            and there's a parameter missing from the doc. Specifically,
            'java.io.File parent'. What is parent suppose to be? I'm a
            little confused. Is this the parent directory of the
            directory I'm suppose to be checking? If so, then that
            doesn't make a whole lot of sense, but perhaps I do not
            understand the reasoning.<br>
            <br>
            Any clarification would be extremely helpful.<br>
            <br>
            Thanks,<br>
            Steve</span> <o:p></o:p></p>
      </div>
    </blockquote>
  </body>
</html>