2009-06-03 25 views
6

私はデータベースにURLを格納しています.2つのURLが同じかどうかを知りたいのですが。末尾のスラッシュをURLから削除することはいつでも安全ですか?

一般的に、末尾のスラッシュは、サーバーからの応答を変更しません。 (つまり、http://www.google.com/http://www.google.comと同じです)

何も見ずに、後ろのスラッシュをいつも盲目的に削除できますか?
これは安全ですか?私は、Webサーバーは、それが望んでいた可能性が理論的にリターン完全に異なるものかどうかを知る
http://www.google.com/q?xxx=something&yyy=something/

、およびI:

私が「何も見ず」の意味することは、私はからスラッシュを削除したいということですスラッシュのないURLに行くと、スラッシュが付いたURLにリダイレクトされることがあります。私の唯一の目的は、両方のURLが同じかどうかを判断することです。

この方法は安全ですか?

+2

必ずしも "リソース"であるとは限りませんが、XML名前空間は末尾のスラッシュまたはスラッシュ以外のものについては非常に特別なものです。 –

答えて

18

いいえ、必ずしも安全ではありません。 Webサーバーは、URLのパス部分を好きなように解釈することができます。 URL上でGETまたはHEADを使用せずに、それが何をするか(URIを解決する)を知ることはできません。

+0

ありがとうございます。私はDBを見てきましたが、幸いにも、これは問題ではないことを確認しました。送信されたすべてのURLは、私たちが持っているブックマークレットコードで把握されています。疑わしいので、末尾のスラッシュを除いて2人のユーザーが同じURLを持つ可能性はありません。少なくとも、それはまだ起こっていない:-)。 –

+1

そして、IIRCでは、URL仕様では、スラッシュで終わるURLはディレクトリを示し、withoutはドキュメントを示していると具体的に述べています。多くのWebサーバーは、既定のドキュメントにリダイレクトまたは返され、後者の場合は401を返します(私は私のことを知っています)。 –

+1

URLスペックは、階層的なURLスキーム(BAR:blahのようなものではなく、FOO://のようなもの)について語っています。いくつかの階層的なものはhttp、ftpのようによく知られていますが、最後に意味があるかどうかは分かりませんが、サーバーが解釈し、OS、サーバーソフトウェアの実装などに依存する可能性があります。 – dajobe

4

いいえ.htaccessファイルの設定によっては、後でスラッシュを付けずに一部のディレクトリまたは「クリーンURL」(CMSによって生成されたものなど)にアクセスできないという状況が発生しました。それはまれであり、ウェブマスターの間違いかもしれませんが、起こる可能性があります。

6

スラッシュの有無にかかわらず、同じ応答を得ることができますが(それは本当であるとは限りませんが)、確かに異なることを意味する可能性があります。ディレクトリを参照するURL、またはサイトがディレクトリとして提示するものを考えてみましょう。 URLを使用する

http://www.somesite.com/directory/ 

...あなたがディレクトリを要求していることがわかります。あなたは末尾のスラッシュオフハック場合:

http://www.somesite.com/directory 

を...サイトでは、一瞬、「ディレクトリ」と呼ばれるファイルの要求としてこれを取り、すべてが混乱になるだろう。これはディレクトリの要求と解釈される可能性がありますが、意味は同じではなく、期待したものが得られない可能性があります。

詳細はthis articleを参照してください。

+0

また、** RFC 3986 **では、[6.2.4。プロトコルベースの正規化](http://tools.ietf.org/html/rfc3986#section-6.2.4)を参照してください。ウェブスパイダーは、2つが同等かどうかを判断しようとする可能性があります。 – DavidRR

0

他にも述べたように、必ずしも安全であるとは限りません。それがあなたのために働くなら、私の推薦は、スラッシュでURLを保存し、あなたが比較をするときにそれらを取り除くことです。あなたは、パフォーマンスヒットを取るだろうが、私はそれが間違ったWebページに誰かを送信するよりも良いと思います。

+0

比較の際に処理したくない場合は、実際のURLとURLの両方を標準形式で保存してください。時空間トレードオフ。 – Chuck

関連する問題