web-dev-qa-db-ja.com

$ _SERVER ['REQUEST_URI']を使用しても安全ですか?

私は他の答えを調べましたが、$_SERVER['REQUEST_URI']が通常推奨されており、$_SERVER['HTTP_Host']と共に現在のページのURIを取得するための受け入れられた答えであることがわかりました。

私はWPソースコードを見ました、そしてそれはそこでも広く使われています。

しかし、私はそれがIIS上で機能しないことについていくらかの論争を見つけました。おそらくそれは過去の問題にすぎなかったのでしょうか。それをチェックアウトするためにIISを自分のPCにインストールしようとさえしましたが、それを設定することができず、これを確認するだけのやり過ぎのようです。

欲しい情報が含まれている唯一のSERVER変数であるようです。

/ pane-slug/nggallery/tags/dark-colors/

強調表示されている例の部分は、NextGEN Gallery 2を介して追加され、$_SERVER['REQUEST_URI']を介してのみアクセス可能です。以前は、get_query_varを使用してアクセスできましたが、もうアクセスできませんでした。

$_SERVER['REQUEST_URI']が設定されていない場合は、手動で設定してPHP_SELFQUERY_STRINGに基づいて作成すると、同等の結果が得られません。

それで、WPインストールで常に利用できる$_SERVER['REQUEST_URI']を当てにしても安全ですか?私はそれがWPコアコードがそれを使っているからだと思いますが、私は尋ねなければなりませんでした。

3

$_SERVER['REQUEST_URI']wp_fix_server_vars()(ファイルwp-includes/load.php)で埋められているので、WordPressでは空になりません。

この関数はプラグインがロードされる前にwp-settings.phpで呼び出されます。それであなたはそれを使うことができます。

しかし、常に値を逃がしてください。これはグローバルであり、他のコードによって変更される可能性があるため、その値を信頼することはできません。

別のケースでは、値にアクセスしています

filter_input(INPUT_SERVER, 'REQUEST_URI'); 

filter_input()は常に元の値をとるので、WordPressによる書き込みアクセスはnotに影響します。したがって、これはより現代的でクリーンなアプローチですが、状況によっては失敗する可能性があります。 スタックオーバーフローのこのスレッド も参照。

8
fuxia