2

すべての Cookie を許可しないとログインできない銀行サイトがあります。私は Firefox 3.0 を使用しており、定義されたリスト以外の Cookie を受け入れないように設定しています (ツール - オプション - プライバシー - Cookie - 例外)。ライブ HTTP ヘッダーによってキャプチャされたすべてのサイトをホワイトリストに追加しましたが、ログインはまだ無効になっています。すべての Cookie とログインを有効にしてから、取得した Cookie を確認しましたが、例外リストに追加される新しいサイトは見当たりませんでした。明らかに、サイトは私が任意の Cookie を受け入れているかどうかをチェックしています。ホワイトリストに登録する必要があるサイトを確認するにはどうすればよいですか? それとも、私は Cookie について何か理解していませんか? すべての Cookie を受け入れることは、すべての適切なサイトをホワイトリストに登録することと同じではありませんか?

サイトはhttps://www.citizensbank.ca/で、Cookie が許可されている場合にのみログイン フィールドが表示されます。許可されていない場合は、「オンライン バンキングにログインするには、JavaScript と Cookie を有効にする必要があります。」

4

3 に答える 3

3

別のマシン (または VMWare イメージ) を取得し、すべての Cookie を削除し、すべてのサイトのすべての Cookie を許可してから、サイトにアクセスしてログインします (これは、既に試したことと似ています)。

次に、バンキング セッションが終了した後 (または、有効にしているテストのためだけに有効期間の短い Cookie を作成している場合) に、Cookie jar を見て、銀行が追加したものを確認します。これにより、実際のマシンに追加する必要があるドメインがわかります。

それでもうまくいかない場合は、銀行に連絡して問題を説明してください。どれを許可する必要があるか、またはすべてを許可するように指示されます。後者の場合は、銀行として維持する価値があるかどうかを判断する必要があります。

または、次のいずれかを実行できます。

  • すべての Cookie をメイン ボックスに表示したくない場合は、銀行にアクセスするためのサンドボックスとして設定した VM を使用します。
  • FF のシャットダウン後に、ホワイトリストに登録されていないすべての Cookie を削除するスクリプトを設定します。
  • 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。ここでは、グローバルが true に設定されている場合にのみチェックされるため、ホワイトリスト URL の量は役に立ちませんcookieEnabled(これはあなたのためではありませんが、当然のことです)。

testCookie()理想的には、下にある HTML でその関数を置き換えることができるだけです。

私は、別の銀行から同じ問題について話している同様のサイトを見つけました (銀行は、すべての脳死の Javascript キディが行き着く場所だと思います :-) hereと、2 つの提案された解決策があります。

1 つ目は、GreaseMonkey をインストールして、このスクリプトをここで使用することでした。明らかに、これは銀行に合わせて変更する必要があります (URL、関数名など)。

上記の最初のリンクの最後の投稿 (現時点では、「午後、2009 年 2 月 15 日、午前 10 時 10 分」の投稿を探してください) も、NoScript を使用して同じ結果を得る方法を示しています。これには、(その特定のページの)cookieEnabled スクリプトをより合理的なスクリプトに置き換えることが含まれますが、おそらくそれを置き換えることを選択して"return true"、結果をハングアップするだけです:-)。

それが多少役立つことを願っています。

完全を期すために (リンクが消えた場合に備えて)、ここに 2 つのスクリプトを含めます。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
    }
);

テストと更新:

FF3 で noscript をインストールして Cookie を完全にオフにしてから、次のabout:config項目を追加すると、銀行のログイン プロンプトが表示されるので、おそらくこれでよいと思います。

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

これを実行してテストし、すべての機能がまだ機能していることを確認することをお勧めします。

于 2009-06-03T01:11:03.170 に答える
0

別のオプション - 別のブラウザを使用してプロセスを開始します。たとえば、通常 Firefox を使用している場合は、代わりに Safari、Opera、Chrome、または MSIE を試してください。通常のブラウザから Cookie をインポートしないでください。次に、Web サイトが機能するために必要なことを調べます。

于 2009-06-03T01:44:41.870 に答える
0

www.citizensbank.ca が機能するように、登録済みのベース ドメインを追加する必要があります。ログオン中に Cookie を許可し、完了したら ctl+shift+del を押すこともできます。

于 2009-06-03T00:20:23.193 に答える