/index.php/seo_path のような URI はどの程度信頼できるか
-
26-09-2019 - |
質問
時々 (特に mod_rewrite が使用できない場合)、このパス スキームが使用されることに気づきました。
http://host/path/index.php/clean_url_here
--------------------------^
これ らしい 少なくとも Apache では動作します。 index.php
が呼び出され、クエリを実行できます。 /clean_url_here
経由部分 $_SERVER['PATH_INFO']
. 。PHPでも 一種の広告 この機能。また、例えば、 コードイグナイター フレームワークは、この手法を URL のデフォルトとして使用します。
質問: その技術はどの程度信頼できるものですか?Apache が呼び出さない状況はありますか index.php
しかし、パスを解決しようとしますか?lighttpd、nginx、IIS、AOLServer についてはどうですか?
ServerFault に関する質問ですか? これは、PHP コード内でこの機能を使用することに関係があると思います。そこで、ここで質問させていただきます。
補遺: VolkerK が提案したように、この質問の合理的な拡張は次のとおりです。プログラマーはどのようにして存在に影響を与えることができますか? $_SERVER['PATH_INFO']
さまざまな種類のサーバーで?
解決
これはスタックオーバーフローとサーバーフォールトにも同様に適した質問だと思います。例えば。開発者として私が言えるのは、pathinfo はユーザー入力と同じくらい信頼できる (つまり、事実上あらゆるものを含めることができる) ということだけであり、Web サーバーのバージョンと構成に応じて、スクリプトがそれを受け取る場合と受け取らない場合があります。
アパッチ: パス情報を受け入れる
IIS:例えば スクリプトマッピングの許可パス情報 その他
などなど...
ただし、サーバー管理者は、「実際の環境では」どのような設定が予想されるのか、また、その設定が推奨される理由を教えてくれる可能性があります。
したがって、質問は次のようになります。あなた (または予想されるユーザーベース) がサーバー構成にどの程度の影響を与えているか。
他のヒント
パス情報を受け入れる これを機能させるには、を有効にする必要があります。
私の経験から言えば、 PATH_INFO
は 通常、通常の Web ホスティング環境やサーバー設定 (IIS 上であっても) で使用できますが、まれに使用できない場合があります。できるだけ多くのプラットフォームにデプロイ可能であると想定されるアプリケーションを構築する場合、私はハードコーディングされたレベルで path_info を信頼しません。
できる限り、ラッパー関数を構築しようとします build_url()
構成設定に応じて、次のいずれかを使用します。
- 生の URL
www.example.com/index.php?clean_url=clean_url_here
- path_info メカニズム
www.example.com/index.php/clean_url
- mod_rewrite
www.example.com/clean_url
そしてそれをアプリケーションが発行するすべての URL で使用します。
この URL の形式を認識しない単純なスクリプト (自動リンクなど) が存在する可能性があります。これにより、コンテンツへのリンクが作成される可能性が低くなります。
これらのタスクでは独自の正規表現パターンが一般的であるため、失敗する可能性が非常に高くなります。
技術的には、これらの URL は問題ありません。SEOの観点から言えば、それらは「完璧ではない」。