• Lars Gierth's avatar
    gateway: enforce allowlist for path prefixes · 09937f84
    Lars Gierth authored
    The gateway accepts an X-Ipfs-Path-Prefix header,
    and assumes that it is mounted in a reverse proxy
    like nginx, at this path. Links in directory listings,
    as well as trailing-slash redirects need to be rewritten
    with that prefix in mind.
    
    We don't want a potential attacker to be able to
    pass in arbitrary path prefixes, which would end up
    in redirects and directory listings, which is why
    every prefix has to be explicitly allowed in the config.
    
    Previously, we'd accept *any* X-Ipfs-Path-Prefix header.
    
    Example:
    
    We mount blog.ipfs.io (a dnslink page) at ipfs.io/blog.
    
    nginx_ipfs.conf:
    
        location /blog/ {
            rewrite "^/blog(/.*)$" $1 break;
            proxy_set_header Host blog.ipfs.io;
            proxy_set_header X-Ipfs-Gateway-Prefix /blog;
            proxy_pass http://127.0.0.1:8080;
        }
    
    .ipfs/config:
    
        "Gateway": {
            "PathPrefixes": ["/blog"],
            // ...
        },
    
    dnslink:
    
        > dig TXT _dnslink.blog.ipfs.io
        dnslink=/ipfs/QmWcBjXPAEdhXDATV4ghUpkAonNBbiyFx1VmmHcQe9HEGd
    
    License: MIT
    Signed-off-by: default avatarLars Gierth <larsg@systemli.org>
    09937f84
init.go 2.58 KB