realip_module
Maxim Dounin
mdounin at mdounin.ru
Tue Aug 16 12:42:05 UTC 2011
Hello!
On Tue, Aug 16, 2011 at 02:40:29PM +0300, Anatoli Marinov wrote:
> My patch for this issue was:
> @@ -157,16 +157,13 @@
> len = r->headers_in.x_forwarded_for->value.len;
> ip = r->headers_in.x_forwarded_for->value.data;
>
> - for (p = ip + len - 1; p > ip; p--) {
> - if (*p == ' ' || *p == ',') {
> - p++;
> - len -= p - ip;
> - ip = p;
> - break;
> - }
> - }
> + p = ip;
>
> - break;
> + while(*p != ',' && *p != ' ' && p < p + len){
> + p++;
> + }
> + len = p - ip;
> + break;
>
> default: /* NGX_HTTP_REALIP_HEADER */
This patch is just wrong: it picks first address from
X-Forwarded-For which may be easily forged.
Maxim Dounin
>
> @@ -414,6 +411,7 @@
>
> On 08/16/2011 12:46 PM, Anatoli Marinov wrote:
> >Hello mates,
> >I tried readip_module and I found it does not work as I expect.
> >For example the header may looks like this:
> >X-Forwarded-For: client1, proxy1, proxy2
> >
> >Where client1 should be the real ip address of the client, proxy1
> >should be the first proxy after the client and proxy2 should be
> >the last proxy after the client and the first before the nginx.
> >Nginx has the connection with proxy2.
> >I think In this case readip_module should return client1 ip
> >address. It returns the latest address in the field - proxy2.
> >What do you think? Is the behaviour wrong or I do not understand
> >the meaning of this header?
> >
> >p.s. http://en.wikipedia.org/wiki/X-Forwarded-For
> >
> >Thanks in advance.
> >A. Marinov
> >
> >
> >_______________________________________________
> >nginx-devel mailing list
> >nginx-devel at nginx.org
> >http://mailman.nginx.org/mailman/listinfo/nginx-devel
>
> _______________________________________________
> nginx-devel mailing list
> nginx-devel at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-devel
More information about the nginx-devel
mailing list