- 今日の情報は2018-09-10書かれたものです。
- 最新の内容は以下を参照してください
- Mozilla Security Blog
- Security/Tracking protection - MozillaWiki
- FirefoxがAnti-trackingな実装を始めた
- 将来的にデフォルトでトラッカーをブロックしたいという方針を掲げた
- Changing Our Approach to Anti-tracking - Future Releases
- Improve page load performance
- SHIELD Studiesの一環としてFastBlockをテストする
- Remove Cross-site tracking
- トラッキングクッキー
- localStorageへのアクセスを防止する
- Why we need better tracking protection | Mozilla Security Blog
- 人々はウェブ上でトラッキングによってデータ収集されるの対して不快感がある
- Opt-inのDNTはサイトが無視するため不十分
- また過去の研究から
- DNTを理解している人は少ない
- デフォルト設定を変更する人は少ない
- トラッキングの多様化
- クッキー以外の方法でもトラッキングがおこなわれるようになった
- evercookie、cookie syncingなど
- => ユーザーが選択ではなく、デフォルト値を変更することにした
- FastBlock - PHD - Google ドキュメント
- TB(Tracking Block)についての仮説
- TBはFirefoxの"Speed"にプラスの影響を与える可能性がある
- TBはページロードのパフォーマンスを改善する可能性がある
- TBはページの破損(breakage)といった悪影響を及ぼさないだろう
- まとめ: Improve speed without breakage
- ウェブサイトの合計ロード時間の55.4%がサードパーティトラッカーによって行われている
- (合計なので、表示にかかるロード時間が50%という意味ではなくその後なども含んでいる)
- Ghostery Tracker Tax Report Shows How Fast the Web Could Be | Digital Trends
- 今は更に増えてる The Tracker Tax - Ghostery
- Fast Blockは遅い(5秒以上ロードにかかる)トラッキングスクリプトをブロックする
- Fast Block
- ルールベースのブロッキング(disconnectの2種類のルール)
- Private mode
- デフォルト
- サードパーティトラッキングCookieのブロック
- 見ているドメインと同じドメインに紐づくもの
- 見ているドメインとは異なるドメインに紐づくもの
トラッキング (行動追跡) は一般的に、ユーザーの複数のサイトにまたがる閲覧データを収集することを指します。 -- https://support.mozilla.org/ja/kb/tracking-protection
- ただし動作については未定義
- Firefoxではサードパーティ + リストに入っているものをトラッキングスクリプトとして扱う
トラッキングをするもの
- FirefoxのネットワークにおけるセキュリティチェックはNecko(
network
)で行われる
- Firefoxにおける"トラッキング"スクリプトとは何かを実装から見ていく
- コンテンツブロックで"トラッカー"をブロックするとあるが、何をブロックするのかは載ってない
- Security/Safe Browsing - MozillaWiki
- Safe Browsingなどを扱うURLClassifierあたりで実装されている
- TrackingURICallback::OnClassifyComplete
- チェックを開始する
- トラッキングテーブルにマッチするURLなら
TrackingURICallback::OnBlacklistResult
へ
if ((shouldEnableTrackingProtection && inTrackingTable) ||
(shouldEnableTrackingAnnotation && inAnnotationTable)) {
// Valid blacklist result, need to check the whitelist(s) next
return OnBlacklistResult(NS_ERROR_MAYBE_TRACKING_URI, inTrackingTable,
inAnnotationTable);
}
- TrackingURICallback::OnBlacklistResult
- blacklistにマッチしたら
- このうちwhitelistにマッチしない => tracking
- 次の2種類のURLがtrackingになっている
NS_ERROR_TRACKING_ANNOTATION_URI
NS_ERROR_TRACKING_URI
📝 trackingの違い
NS_ERROR_TRACKING_URI
テーブルに入ってる純粋なトラッカーNS_ERROR_TRACKING_ANNOTATION_URI
テーブル外のトラッカー
// The lookup failed to match at least one of the active whitelists
// (tracking protection takes precedence over tracking annotations)
return OnWhitelistResult(isTracker ? NS_ERROR_TRACKING_URI :
NS_ERROR_TRACKING_ANNOTATION_URI);
- TrackingURICallback::OnTrackerFound
- HttpBaseChannel::SetIsTrackingResource
void
HttpBaseChannel::SetIsTrackingResource(bool aIsThirdParty)
{
LOG(("HttpBaseChannel::SetIsTrackingResource thirdparty=%d %p",
static_cast<int>(aIsThirdParty), this));
if (aIsThirdParty) {
MOZ_ASSERT(!mIsFirstPartyTrackingResource);
mIsThirdPartyTrackingResource = true;
} else {
MOZ_ASSERT(!mIsThirdPartyTrackingResource);
mIsFirstPartyTrackingResource = true;
}
if (mLoadInfo) {
MOZ_ALWAYS_SUCCEEDS(mLoadInfo->SetIsTracker(true));
}
}
最終的にTrackingResource is third party or first party && リストマッチ
NS_IMETHODIMP
HttpBaseChannel::GetIsTrackingResource(bool* aIsTrackingResource)
{
MOZ_ASSERT(!(mIsFirstPartyTrackingResource && mIsThirdPartyTrackingResource));
*aIsTrackingResource =
mIsThirdPartyTrackingResource || mIsFirstPartyTrackingResource;
return NS_OK;
}
トラッキング (行動追跡) は一般的に、ユーザーの複数のサイトにまたがる閲覧データを収集することを指します。 -- https://support.mozilla.org/ja/kb/tracking-protection
- propertiers
- flicker.com
- tumblr.com
- yahoo.com
- yahoo.co.jp
- resources
- adinterax.com
- yahooapis.com
- yimg.com
unvisit blockingに利用される
- isThridParty
- ThirdPartyUtil::GetBaseDomain
- BaseDomain同士の一致を見る
- a.example.com === b.example.com
- a.example.com !== c.ex.com
- Necko
- 【翻訳】コンテンツセキュリティのデフォルト適用技術 - Mozilla Security Blog 日本語版
- Security/Tracking protection - MozillaWiki
- https://blog.mozilla.org/security/files/2016/11/5589a101.pdf
- Enforcing Content Security By Default within Firefox | Mozilla Security Blog
- Security/Tracking protection - MozillaWiki
- トラッキングスクリプトのload priorityの低下
- トラッキングスクリプトからのリクエストも対象:
fetch
やXHRが見てる
- トラッキングスクリプトからのリクエストも対象:
- トラッキングスクリプトのリクエストをスロットリング
- トラッキングスクリプトを"tailling"
- FastBlock: 遅いトラッキングスクリプトのリクスエストをキャンセル
- トラッキングスクリプトのload priorityの低下
- Safari ITP
- Storage Access API
- Proposal: Storage Access API · Issue #3338 · whatwg/html
- Safari
- Firefox : Intent to Implement: Storage Access API - Google グループ
- iframeでのクロスドメインからCookieやStorageのアクセスを制限する
- Youtubeの埋め込み、SNSボタンの埋め込みによるトラッキングの防止
- YoutubeはR18の反映などをするためにCookieを使う => UIが変わる
- embed iframe -> 埋め込みサイトに許可を得ないでトラッキングできる -> 問題
- embed iframe + postmessage -> 埋め込みサイトにも連携が必要 -> まああり