2017-05-23 6 views
0

のための引数の値をエスケープする方法:nginxの:私たちは、このような場所の構成を有しているproxy_pass

location ~ ^/suggest/(?<search>.+) { 
    proxy_pass https://internal.host/v1/products?suggest=$search; 
} 

問題はinternal.hostは、外部から誰でもの値として&another_param=valueを渡すことができることを意味し、そのまま$searchを受信することです$searchとなり、リモートエンドポイントへの不正アクセスが発生します。

質問は次のとおりです。引数の値をエスケープする方法は?中

答えて

0
location ~ ^/app/(.*)$ { 
    proxy_pass  http://192.169.154.102:9999/some_dir/$1; 
} 

この例の結果:

test.com/app/request/xxxxx => http://192.168.154.102:9999/some_dir/xxxxx 

は例では、あなたのニーズに合わせて調整する必要がないということ。 proxy_pass(ing)の引数の詳細については、this linkを参照してください。さらに、引数を取り込むWebアプリケーション/スクリプトは、指定されたパラメータのチェックを実行する必要があります。 の前に、パラメータを使って何かが行われ、渡されたパラメータのチェックやフィルタリングが実行されます。上記の方法でパラメータが制限されている場合は、いくつかのチェックを行いますが、確認してください。

例:Nginx proxy_pass: examples for how does nginx proxy_pass map the request

+0

申し訳ありませんが、あなたは疑問を誤解していたと思います。私はそれをパスではなく引数の値として渡す必要があります。 2.私は渡される前にそれをurl_escapedにする必要があります。そうでなければ、エスケープされていないアンパサンドを渡して任意の引数を渡すことができます。理解できるように、要求を受け入れるアプリケーションの検証とは何の関係もありません。 –

関連する問題