logo
Safari ITP 影响实验

结果与最佳实践

在这个实验的最后一部分,我们将总结我们的发现,并提供处理 Safari ITP 的建议。

主要发现

2. localStorage 和 sessionStorage

3. 指纹识别预防

对 Web 应用的影响

1. 分析和跟踪

2. 身份验证和会话

3. 用户体验

最佳实践

// 不要使用
document.cookie = "user=123; domain=.example.com";
// 使用
document.cookie = "user=123; SameSite=Strict; Secure";

2. 存储处理

// 检查存储可用性
function isStorageAvailable() {
try {
const storage = window.localStorage;
const x = '__storage_test__';
storage.setItem(x, x);
storage.removeItem(x);
return true;
} catch(e) {
return false;
}
}
// 使用带后备方案
if (isStorageAvailable()) {
localStorage.setItem('key', 'value');
} else {
// 回退到会话存储或 Cookie
}

3. 跨站点请求

// 正确包含凭证
fetch('https://api.example.com/data', {
credentials: 'include',
headers: {
'Content-Type': 'application/json'
}
});

4. 指纹识别替代方案

// 不要使用 canvas 指纹识别
// 使用服务器端会话管理
const sessionId = generateUniqueId();
storeSession(sessionId, userData);

建议

  1. 隐私优先方法

    • 设计应用时考虑隐私
    • 最小化数据收集
    • 对跟踪保持透明
  2. 优雅降级

    • 为受限功能实现后备方案
    • 在启用和禁用 ITP 的情况下测试
    • 提供替代解决方案
  3. 用户沟通

    • 告知用户隐私功能
    • 解释为什么某些功能可能受限
    • 提供清晰的隐私政策
  4. 技术实现

    • 使用 SameSite Cookie 属性
    • 实现适当的 CORS 头
    • 考虑使用 Privacy Sandbox API

结论

Safari ITP 显著影响了 Web 应用处理用户跟踪和隐私的方式。虽然它可能给某些应用带来挑战,但最终有利于用户隐私和安全。通过遵循这些最佳实践和建议,开发者可以创建既能与 ITP 良好配合又能尊重用户隐私的应用。

额外资源