I.E。拦截所有可能试图设置的cookie(包括分析(例如分析)或Facebook等第三方cookie),并将其阻止,除非用户已获得同意。 显然,一旦设置了所有饼干,这显然可以删除所有cookie,但是尽管这相当于不允许它们首先设置为同一件事,但我猜想在这种情况下它不够好,因为它不是'遵守法律的信。
Ideas?
我对这个答案也很感兴趣。 我已经完成了我需要在PHP中完成的工作,但是JavaScript组件仍然使我感到不安。
我在php中做到这一点:
$dirty = false;
foreach(headers_list() as $header) {
if($dirty) continue; // I already know it needs to be cleaned
if(preg_match('/Set-Cookie/',$header)) $dirty = true;
}
if($dirty) {
$phpversion = explode('.',phpversion());
if($phpversion[1] >= 3) {
header_remove('Set-Cookie'); // php 5.3
} else {
header('Set-Cookie:'); // php 5.2
}
}
然后,我还有一些其他代码,当用户接受cookies时,它会关闭它。
问题是,在我的网站中使用了第三方插件,可以通过JavaScript操纵Cookie,并且缺少通过它们扫描以确定哪些访问文档。 如果他们都使用相同的框架,那将很方便,因此我可能能够覆盖setCookie功能 - 但它们却没有。 如果我只能删除或禁用文档,那就太好了。
Edit: 可以防止JavaScript访问获得或设置cookie。Edit2: 为此可以在IE中工作:
if(!document.__defineGetter__) {
Object.defineProperty(document, 'cookie', {
get: function(){return ''},
set: function(){return true},
});
} else {
document.__defineGetter__("cookie", function() { return '';} );
document.__defineSetter__("cookie", function() {} );
}
基本上,它使用
defineGetter
和
defineSetter
方法来设置页面上的所有cookie,然后删除指定的cookie,如果这是您的目标,当然也可以逆转此角色。 我已经用Google Analytics(分析)等第三方饼干对此进行了测试,并且它似乎运行良好(不包括cookie意味着我不再在Google Analytics(分析)中获取),也许您可以使用它并适应您的特定需求.
我已经包括了有关是否不是cookies名称的部分供您参考,尽管您可以轻松地从数组中获取这些值并通过这些方式循环循环。基本上,此功能将包含所有cookie,除了指定部分的cookie
__utmb
您可以使用或或过滤器将其添加到此数字,数据库,用户输入或任何您喜欢排除特定的内容(用于确定必需cookie和非必需的cookie之间)。
__utmb
有点老,但我认为您应该得到一个有效的答案:
步长1:不要执行第三方脚本代码。 步长2:显示cookie横幅。
步骤3:等到用户接受,现在您可以执行第三方脚本代码。
为我工作您无法完全禁用它,但是您可以用
if( cookie_name.trim() != '__utmb' ) { all_cookies = all_cookies + cookies[i] + ";"; }
function deleteSpecificCookies() {
var cookies = document.cookie.split(";");
var all_cookies = "";
for (var i = 0; i < cookies.length; i++) {
var cookie_name = cookies[i].split("=")[0];
var cookie_value = cookies[i].split("=")[1];
if (cookie_name.trim() != "__utmb") {
all_cookies = all_cookies + cookies[i] + ";";
}
}
if (!document.__defineGetter__) {
Object.defineProperty(document, "cookie", {
get: function () {
return all_cookies;
},
set: function () {
return true;
},
});
} else {
document.__defineGetter__("cookie", function () {
return all_cookies;
});
document.__defineSetter__("cookie", function () {
return true;
});
}
}
如果某些用户不使用.htaccess
SetEnv session.use_cookies='0';
如何不关注骗局?? 从这是旧新闻的事实来看,文本清楚地表明,它仅适用于对网站函数不必要的cookie。意思是会话cookie,购物篮或与使网站工作直接相关的任何内容都很好。未经许可,其他任何(跟踪,统计等)被“不允许”。