HTTP Refer詳細及びRefer制御
4195 ワード
HTTP Referとは
refererの意味は簡単に言えば、HTTP Refererはheaderの一部であり、ブラウザがwebサーバに要求を送信すると、一般的にRefererを持って、どのページからリンクしたのかをサーバに伝え、サーバ籍は処理にいくつかの情報を得ることができる.
例えば、あるページにハイパーリンクを挿入して他のページにリンクすると、このハイパーリンクをクリックして別のページにリンクすると、ブラウザがウェブサーバにhttpリクエストを送信することに相当し、別のページにとって、このreferは前のページのURLであり、アドレスバーから直接URLを入力したり、ページをリフレッシュしたりする方法では、refer=nullとなり、このreferを設定することでチェーンの問題を防ぐことができます
例えば、私のホームページから友人にリンクすると、彼のサーバーはHTTP Referから毎日どれだけのユーザーが私のホームページのリンクをクリックして彼のサイトにアクセスしているかを統計することができます.
Refererは実は英語の単語Refererのはずですが、スペルを間違えた人が多すぎるので、標準を書く人も間違っています.
Referは盗難防止チェーンとしても使用される場合があります
つまり、ダウンロード時にソースアドレスがサイトのドメイン名内にあるかどうかを判断し、そうでなければダウンロードや表示できない.多くのサイト、例えば天涯はReferページを通じてユーザーが画像をダウンロードできるかどうかを判断する.
もちろん、一部の悪意のあるユーザーに対しては、Referを偽造していくつかの権限を得ることも可能であり、ウェブサイトを設計する際にこの問題を考慮しなければならない.
また、電子商取引サイトのセキュリティとして、クレジットカードなどの重要な情報を提出するページでreferで前のページが自分のサイトかどうかを判断し、そうでなければハッカーが自分で書いたフォームで提出し、前のページのjavascriptの検証をスキップできるようにするなどの目的で使用することもできます.
ただし、Rerfererはクライアントで変更されやすいため、認証や他の非常に重要なチェックに使用しないでください.
Referは信頼性がありませんが、画像の盗難を防ぐには十分です.誰もがクライアントの構成を変更するわけではありません.実装は一般的にapacheのプロファイルを介して行われ、まずアクセス可能なアドレスを設定します.
マークされたアクセスを許可するには、次のようにします.
または
前のページのreferer情報が取得できない場合
ブラウザのアドレスバーに直接アドレスを入力します.
location.reload()リフレッシュ(location.hrefまたはlocation.replace()を使用して情報をリフレッシュします).
微信ダイアログボックスで、リンクをクリックして微信自身のブラウザに入ります.
QQまたは微信のブラウザにスキャンします.
直接新しいウィンドウでページを開きます.2017.8.3新しいバージョンChromeテストを更新し、新しいウィンドウページにはdocument.referrerが残っています.
httpのウェブサイトから直接httpプロトコルのウェブサイトに入ります(Chromeの下で親測します);
aラベル設定rel="noreferrer"(IE 7+対応);
metaラベルはブラウザにreferを送信させないように制御します.
例:
Refer Metaラベルを使用してreferを制御する
シーンの操作
場合によっては、ウェブサイトがserverに送信されるrefer情報を制御したい場合に、このrefer metadataパラメータを使用することができます.
プライバシー
ソーシャルサイトには一般的にユーザー個人ページがあり、これらのページにはユーザーが外部ネットワークのリンクを追加する可能性がありますが、ソーシャルサイトはユーザーがこれらのリンクをクリックしたときに、ユーザーページのURLを漏らすことを望んでいない可能性があります.これらのURLには機密情報が含まれている可能性があります.もちろん、一部のソーシャルサイトでは、完全なURL情報ではなく、referにhostnameを提供したいだけかもしれません.
安全
httpを使用しているサイトの中には、URLにユーザーのアイデンティティ証明書としてパラメータ(sidなど)を使用し、他のhttpサイトのリソースを導入する必要がある場合もあります.この場合、サイトはユーザーのアイデンティティ証明書情報を漏らすことを望んでいません.
Object-Capability Discipline
Object-CApability Disciplineに従うサイトもありますが、referはこのポリシーに反しているため、Object-CApability Disciplineに有利になります.
テクノロジーの詳細
referのmetedataパラメータは、次のタイプの値に設定できます.
never always origin default
ドキュメントにmetaラベルが挿入され、nameプロパティの値がreferの場合、ブラウザクライアントは次の手順に従ってラベルを処理します.
1.metaタグにcontent属性がない場合は、次のすべての操作を終了します.
2.contentの値をreferrer-policyにコピーし、小文字に変換
3.contentの値が上のリストのいずれかであるかどうかを確認し、そうでない場合はdefaultに設定します.
上記の手順の後、ブラウザがhttpリクエストを開始すると、contentの値に従って、次のように反応します(以下、refer-policyの値、すなわちmetaラベルのcontentの値):
1.refer-policyの値がneverの場合:http headのreferを削除します.
2.refer-policyの値がdefaultの場合:現在のページがhttpsプロトコルを使用し、ロードするリソースが通常のhttpプロトコルを使用している場合は、httpヘッダのreferを空にします.
3.refer-policyの値がoriginの場合:origin部分のみ送信;
4.refer-policyの値がalwaysの場合、httpヘッダのreferの値は変更されません.この場合、現在のページでhttpプロトコルが使用され、ロードするリソースがhttpプロトコルを使用している場合、リソースをロードするリクエストヘッダにもreferが携帯されます.
例
ページに次のmetaラベルが含まれている場合、現在のページから開始されたすべてのリクエストはreferを携帯しません.
ページに次のようなmetaタグが含まれている場合、現在のページから開始されたhttpリクエストは、完全なURLではなく、origin部分のみを携帯します(注:原文の文脈から、ここのoriginはschemaとhostnameを含む部分urlであり、pathなどの後の他のurl部分は含まれていないことを理解しています).
注意:本明細書で説明したmetaタグを使用すると、ブラウザの既存のreferポリシーが破られ、例えばhttpプロトコルのページからhttpのページにジャンプする場合、適切な値が設定されている場合、referも携帯されます.
その他の質問
これはrel=noreferと何の関係がありますか?rel=noreferは、本明細書のmetaラベルで設定した値を上書きする可能性があります.つまり、機能オーバーライドです.origin情報は完全なurlではないので、ブラウザクライアントはoriginの後にpath部分として/を追加すると推定されます.もしoriginが唯一だったら、どうなるのでしょうか.referは無視されると推定されます.
refererの意味は簡単に言えば、HTTP Refererはheaderの一部であり、ブラウザがwebサーバに要求を送信すると、一般的にRefererを持って、どのページからリンクしたのかをサーバに伝え、サーバ籍は処理にいくつかの情報を得ることができる.
例えば、あるページにハイパーリンクを挿入して他のページにリンクすると、このハイパーリンクをクリックして別のページにリンクすると、ブラウザがウェブサーバにhttpリクエストを送信することに相当し、別のページにとって、このreferは前のページのURLであり、アドレスバーから直接URLを入力したり、ページをリフレッシュしたりする方法では、refer=nullとなり、このreferを設定することでチェーンの問題を防ぐことができます
例えば、私のホームページから友人にリンクすると、彼のサーバーはHTTP Referから毎日どれだけのユーザーが私のホームページのリンクをクリックして彼のサイトにアクセスしているかを統計することができます.
Refererは実は英語の単語Refererのはずですが、スペルを間違えた人が多すぎるので、標準を書く人も間違っています.
Referは盗難防止チェーンとしても使用される場合があります
つまり、ダウンロード時にソースアドレスがサイトのドメイン名内にあるかどうかを判断し、そうでなければダウンロードや表示できない.多くのサイト、例えば天涯はReferページを通じてユーザーが画像をダウンロードできるかどうかを判断する.
もちろん、一部の悪意のあるユーザーに対しては、Referを偽造していくつかの権限を得ることも可能であり、ウェブサイトを設計する際にこの問題を考慮しなければならない.
また、電子商取引サイトのセキュリティとして、クレジットカードなどの重要な情報を提出するページでreferで前のページが自分のサイトかどうかを判断し、そうでなければハッカーが自分で書いたフォームで提出し、前のページのjavascriptの検証をスキップできるようにするなどの目的で使用することもできます.
ただし、Rerfererはクライアントで変更されやすいため、認証や他の非常に重要なチェックに使用しないでください.
Referは信頼性がありませんが、画像の盗難を防ぐには十分です.誰もがクライアントの構成を変更するわけではありません.実装は一般的にapacheのプロファイルを介して行われ、まずアクセス可能なアドレスを設定します.
# domain.com , domain.com
SetEnvIfNoCase Referer “^http://www.domain.com/” local_ref
#
SetEnvIf Referer “^$” local_ref
マークされたアクセスを許可するには、次のようにします.
Order Allow,Deny
Allow from env=local_ref
または
Order Deny,Allow
Deny from all
Allow from env=local_ref
前のページのreferer情報が取得できない場合
ブラウザのアドレスバーに直接アドレスを入力します.
location.reload()リフレッシュ(location.hrefまたはlocation.replace()を使用して情報をリフレッシュします).
微信ダイアログボックスで、リンクをクリックして微信自身のブラウザに入ります.
QQまたは微信のブラウザにスキャンします.
直接新しいウィンドウでページを開きます.2017.8.3新しいバージョンChromeテストを更新し、新しいウィンドウページにはdocument.referrerが残っています.
httpのウェブサイトから直接httpプロトコルのウェブサイトに入ります(Chromeの下で親測します);
aラベル設定rel="noreferrer"(IE 7+対応);
metaラベルはブラウザにreferを送信させないように制御します.
例:
Refer Metaラベルを使用してreferを制御する
シーンの操作
場合によっては、ウェブサイトがserverに送信されるrefer情報を制御したい場合に、このrefer metadataパラメータを使用することができます.
プライバシー
ソーシャルサイトには一般的にユーザー個人ページがあり、これらのページにはユーザーが外部ネットワークのリンクを追加する可能性がありますが、ソーシャルサイトはユーザーがこれらのリンクをクリックしたときに、ユーザーページのURLを漏らすことを望んでいない可能性があります.これらのURLには機密情報が含まれている可能性があります.もちろん、一部のソーシャルサイトでは、完全なURL情報ではなく、referにhostnameを提供したいだけかもしれません.
安全
httpを使用しているサイトの中には、URLにユーザーのアイデンティティ証明書としてパラメータ(sidなど)を使用し、他のhttpサイトのリソースを導入する必要がある場合もあります.この場合、サイトはユーザーのアイデンティティ証明書情報を漏らすことを望んでいません.
Object-Capability Discipline
Object-CApability Disciplineに従うサイトもありますが、referはこのポリシーに反しているため、Object-CApability Disciplineに有利になります.
テクノロジーの詳細
referのmetedataパラメータは、次のタイプの値に設定できます.
never always origin default
ドキュメントにmetaラベルが挿入され、nameプロパティの値がreferの場合、ブラウザクライアントは次の手順に従ってラベルを処理します.
1.metaタグにcontent属性がない場合は、次のすべての操作を終了します.
2.contentの値をreferrer-policyにコピーし、小文字に変換
3.contentの値が上のリストのいずれかであるかどうかを確認し、そうでない場合はdefaultに設定します.
上記の手順の後、ブラウザがhttpリクエストを開始すると、contentの値に従って、次のように反応します(以下、refer-policyの値、すなわちmetaラベルのcontentの値):
1.refer-policyの値がneverの場合:http headのreferを削除します.
2.refer-policyの値がdefaultの場合:現在のページがhttpsプロトコルを使用し、ロードするリソースが通常のhttpプロトコルを使用している場合は、httpヘッダのreferを空にします.
3.refer-policyの値がoriginの場合:origin部分のみ送信;
4.refer-policyの値がalwaysの場合、httpヘッダのreferの値は変更されません.この場合、現在のページでhttpプロトコルが使用され、ロードするリソースがhttpプロトコルを使用している場合、リソースをロードするリクエストヘッダにもreferが携帯されます.
例
ページに次のmetaラベルが含まれている場合、現在のページから開始されたすべてのリクエストはreferを携帯しません.
ページに次のようなmetaタグが含まれている場合、現在のページから開始されたhttpリクエストは、完全なURLではなく、origin部分のみを携帯します(注:原文の文脈から、ここのoriginはschemaとhostnameを含む部分urlであり、pathなどの後の他のurl部分は含まれていないことを理解しています).
注意:本明細書で説明したmetaタグを使用すると、ブラウザの既存のreferポリシーが破られ、例えばhttpプロトコルのページからhttpのページにジャンプする場合、適切な値が設定されている場合、referも携帯されます.
その他の質問
これはrel=noreferと何の関係がありますか?rel=noreferは、本明細書のmetaラベルで設定した値を上書きする可能性があります.つまり、機能オーバーライドです.origin情報は完全なurlではないので、ブラウザクライアントはoriginの後にpath部分として/を追加すると推定されます.もしoriginが唯一だったら、どうなるのでしょうか.referは無視されると推定されます.