Как выяснить, какой сайт добавить в белый список файлов cookie? - PullRequest
2 голосов
/ 03 июня 2009

Существует банковский сайт, на который я не могу войти, пока не разрешу принимать все куки. Я использую Firefox 3.0, и я установил его, чтобы не принимать куки, кроме как из определенного списка (Инструменты - Параметры - Конфиденциальность - Файлы cookie - Исключения) Я добавил все сайты, захваченные заголовками Live HTTP, в белый список, но вход в систему по-прежнему отключен. Я попытался включить все файлы cookie и войти в систему, а затем посмотреть на полученные файлы cookie - не увидел ни одного нового сайта для добавления в список исключений. Очевидно, что сайт каким-то образом проверяет, принимаю ли я произвольный файл cookie. Как я могу узнать, какой сайт должен быть в белом списке? Или я что-то не понимаю в файлах cookie, и принятие всех файлов cookie не то же самое, что наличие всех нужных сайтов в белом списке?

Сайт - https://www.citizensbank.ca/, и он отображает поля входа только в том случае, если разрешены какие-либо файлы cookie, в противном случае отображается сообщение «Для входа в онлайн-банкинг необходимо включить JavaScript и файлы cookie».

Ответы [ 3 ]

3 голосов
/ 03 июня 2009

Я бы взял себе другую машину (или образ VMWare), удалил все куки-файлы, разрешил все куки-файлы со всех сайтов, затем зашел на ваш сайт и авторизовался (что похоже на то, что вы уже пробовали).

Затем, после того, как ваша банковская сессия будет завершена (или во время, если они создают недолгий cookie-файл только для тестирования, если вы его включили), посмотрите на свой файл cookie, чтобы увидеть, что добавил банк. Это должно сказать вам домены, которые вы должны добавить к своей реальной машине.

Если это не сработает, обратитесь в банк и объясните свои проблемы. Они либо скажут вам, какие из них вы должны разрешить, либо они скажут вам разрешить им всем. Если последнее, вам нужно решить, стоит ли их хранить в качестве вашего банка.

В качестве альтернативы вы можете:

  • используйте ту виртуальную машину, которую вы настроили в качестве песочницы для доступа к банку, если вы не хотите, чтобы все файлы cookie появлялись в вашем основном ящике.
  • настроить скрипт для удаления всех файлов, не занесенных в белый список, после выключения FF.
  • перестаньте беспокоиться о файлах cookie и просто разрешите их (я не думаю, что когда-либо слышал об использовании файлов cookie в качестве вектора атаки).

Если хотите, пришлите мне данные своей учетной записи (имя пользователя / пароль), и я посмотрю, смогу ли я отладить их отсюда :-) Шучу (если это не было сразу очевидно).

Обновление:

В вашем банке есть особенно гнусный способ проверки требований. Они проверяют, принимаете ли вы ВСЕ куки-файлы, а они вообще ничего не делают. Они должны просто посмотреть, смогут ли они создать файл cookie и прочитать его обратно, что сделает их совместимыми с менеджерами файлов cookie.

Код, который у них есть:

function testCookie() {
    if (typeof navigator.cookieEnabled !== "undefined") {
        return !!navigator.cookieEnabled;
    } else{
        document.cookie="testcookie";
        return document.cookie.indexOf("testcookie")!=-1;
    }
}
if(!testCookie()){
    var browserWarningString = '';
    browserWarningString += '<div class="warning">';
    browserWarningString += '<p>To login to online banking, you must have
        JavaScript and cookies enabled.</p>';
    browserWarningString += '</div>\n';
    document.getElementById("loginAuth").innerHTML = browserWarningString;
}

Это первый бит testCookie(), return !!navigator.cookieEnabled, который проблематичен. Никакое количество URL-адресов, включенных в белый список, не поможет вам в этом, поскольку это будет проверено, только если для глобального cookieEnabled установлено значение true (что не для вас, и это правильно).

В идеале, вы могли бы просто заменить эту testCookie() функцию в HTML-коде.

Я нашел похожий сайт, в котором говорится об одной и той же проблеме из другого банка (я думаю, что банки - это то место, где заканчиваются все умственно отсталые детишки Javascript :-) здесь вместе с двумя предложенными решения.

Первым было установить GreaseMonkey и использовать этот скрипт здесь . Очевидно, что это необходимо изменить для вашего банка (URL, имя функции и т. Д.).

В последнем посте по этой первой ссылке выше (на данный момент ищите пост «днем рождения, 15 февраля 2009 г., 10:10 утра») также показано, как добиться того же результата с помощью NoScript. Это включает в себя замену сценария cookieEnabled (для этой конкретной страницы) более рациональным, хотя я, вероятно, просто выберу замену его на "return true" и приведу к последствиям: -).

Надеюсь, это немного поможет.

Для полноты (на случай, если ссылки исчезнут), я включу здесь два сценария. GreaseMonkey один сводится к:

// ==UserScript==
// @name          TD Canada Trust EasyWeb Repair
// @namespace     tag:GossamerGremlin,2007-04-28:Repair
// @description   Repair TD Canada Trust EasyWeb website.
// @include       https://easyweb*.tdcanadatrust.com/*
// @exclude       
// ==/UserScript==

var scriptName = "TD Canada Trust EasyWeb Repair";

// The above @include pattern is overbroad because it exposes this
// user script to potential attacks from URLs such as this:
//   https://easyweb.evil.example.com/not.tdcanadatrust.com/bad.html
// The following check eliminates such possibilities:
if (location.href.match(/^https:\/\/easyweb\d\d[a-z].tdcanadatrust.com\//))
{
    // Visibly mark page to remind that this script is in use.
    if (document.body)
    {
        host = document.location.host;
        dummyDiv = document.createElement('div');
        dummyDiv.innerHTML = '<div><span style="color: red">Greased by: ' +
                             scriptName + ' (' + host + ')</span></div>';
        document.body.insertBefore(dummyDiv.firstChild,
            document.body.firstChild);
    }
    unsafeWindow.navigator.__defineGetter__("cookieEnabled",
        canStoreCookieFixed);
}

// canStoreCookieFixed()
//   TD's version relies on navigator.cookieEnabled, which is not set
//   if customer has cookie manager, even when cookies are allowed for
//   EasyWeb. The only reliable check for enabled cookies is to actually
//   test if session cookie settings succeed, as done in this function
//   replacement.
function canStoreCookieFixed()
{
    var testSessionCookie ="testSessionCookie=Enabled";
    document.cookie = testSessionCookie;
    return (document.cookie.indexOf(testSessionCookie) != -1);
}

Версия NoScript сводится к «добавить следующее к about: config»:

noscript.surrogate.nce.sources=@easyweb*.tdcanadatrust.com

noscript.surrogate.nce.replacement=navigator.__defineGetter__(
    "cookieEnabled",function(){
        var ed=new Date;
        ed.setTime(0);
        var tc="__noscriptTestCookie_"+Math.round((Math.random()*99999))
            .toString(16)+"=1";
        document.cookie=tc;
        var ok=document.cookie.indexOf(tc)>-1;
        document.cookie=tc+";expires="+ed.toGMTString();
        return ok
    }
);

Проверка и обновление:

Когда я устанавливаю noscript и полностью отключаю файлы cookie в FF3, а затем добавляю следующие about:config элементы, появляется запрос на вход в систему для вашего банка, поэтому я думаю, что это, вероятно, путь:

noscript.surrogate.nce.sources     = *.citizensbank.ca
noscript.surrogate.nce.replacement =
    navigator.__defineGetter__("cookieEnabled",function(){return true});

Я предлагаю вам сделать это и протестировать, чтобы убедиться, что у вас все еще есть все функции.

0 голосов
/ 03 июня 2009

Другой вариант - использовать другой браузер для запуска процесса. Например, если вы обычно используете Firefox, попробуйте Safari или Opera, или Chrome, или MSIE. Не импортируйте куки из вашего обычного браузера. Затем проверьте, что нужно для того, чтобы веб-сайт заработал.

0 голосов
/ 03 июня 2009

Вы должны добавить их зарегистрированный базовый домен, поэтому www.citizensbank.ca должен работать. Вы также можете попытаться разрешить использование файлов cookie при входе в систему и нажать Ctrl + Shift + Del, когда закончите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...