On Mon, 16 Feb 2004, Evgeny Kotsuba wrote:

> Hi,
> 
> I just find that  Mozilla can  ask urls like 
> http://www.lasercomp.ru/technologies/..%5Cimg/lk.gif   and user can 
> see nothing....

Well. it is a perfectly valid URL for the file 
"technologies/..%5Cimg/lk.gif" on "www.lasercomp.ru". If there is a client 
which reads this URL differently then the client is very broken.

> Well this is windoz-way to write  things like that,  but...

Don't blaim Windows for sloppy web masters who don't verify their content 
when publishing information on the web.

> +/* EK add for fucking M$-style (beep) like 
> http://www.lasercomp.ru/technologies/..%5Cimg/logo3.gif */
> +    t = strstr(urlpath,"%5C");
> +    if(t)
> +    {  int i;
> +       l = strlen(t);
> +       q = t + 3;
> +       *t = '/';
> +       t++;
> +       for(i=3; i < l; i++)
> +       {  *t++ = *q++;
> +       }
> +       *t = 0;
> +    }

This does not fix the URL or the webmaster who published this URL. To
correct this URL you need to have the original HTML in where the URL is
embedded correcteed.

In fact modifying URLs in this manner violates the HTTP standard and is
not acceptable.

If you still want to do this then it is easily done via a redirector. No 
need to modify Squid. In such case you can even do it correctly by 
removing the directory.


Long story:

   http://www.lasercomp.ru/technologies/..%5Cimg/logo3.gif

is the result of a "..\img/logo3.gif" URL in a IMG SRC tag within a
document in the /technologies/" directory. By guessing the webmaster of
this site was using Windows or other system using \ as directory separator
it can be guessed he intended to use "../img/logo3.gif", and the URL
should thus be transformed into "http://www.lasercomp.ru/img/logo3.gif"; as 
this is what the browser whould have done had the webmaster used the 
correct directory separator when writing the URL.

But as I said, if you have a client where this URL works when going direct 
but not via the proxy then you have a very broken client. No HTTP clients 
are allowed to even remotely think that \ or %5C is a directory separator 
in HTTP URLs.  Servers MAY, but then there is no difference between going 
direct or via the proxy.

local file URLs is a different story, \ is the directory separator on
local files on Winfows and legal to use for that purpose on Windows, even
if / is preferred and works better. How /../ is to be interpreated by the 
browser differs significantly however

  /somedir%5Csubdir/../otherdir
or
  /somedir\subdir/../otherdir

is

  /otherdir

not

  /somedir/otherdir

even if the latter is most likely what was intended.

Regards
Henrik

Reply via email to