21

リンクの場所をコピーしようとしたり、Facebook でリンクを開こうとしたりすると、リンクが変更されてl.php.

たとえば、私はに送ることができます

 http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.google.com%2F&h=DKVUritNDJDJLDLVbldoDLFKBLOD5dlfDJY_-d3fgDUaA9b

私のブラウザはリンクのプレビューを としてレンダリングしますがhttp://www.google.com/

今日、Firebug を使用して詳しく調べたところ、Facebook がonmousedown="UntrustedLink.bootstrap($(this)[...]タグ<a>を挿入していることがわかりました。2 番目にリンクを右クリックするとhref、Firebug の属性が変更されました。

これは心配です。

私たちの多くが技術に詳しくない人に与えたアドバイス (フィッシングの被害に遭わないように、クリックする前にリンク先を確認してください) は役に立たなくなったようです。これはセキュリティ上のリスクではありませんか? フィッシング Web サイトはこれを悪用できませんか?

onmousedownブラウザは、属性の変更を許可しないかhref、属性を読み取る前に JavaScript を実行して、この動作を防がないのはなぜhrefですか?

編集: フィッシングのリスクよりも私を悩ませているのは、ユーザーが誤解されていることであり、信頼できるソースによるものであるかどうかにかかわらず、これが発生する可能性があることは単に間違っていると感じていることを簡単に強調したいと思います.

4

3 に答える 3

5

ここにフィッシングの可能性があることに同意します。これはかなり前に FireFoxのバグとして報告されていましたが、問題は次のとおりです。

<body onmousedown="document.getElementById('changeMe').href='www.somewhereelse.com'">
    <a id="changeMe" href="www.google.com">google</a>
</body>

イベントは親にバブル アップします。onmousedown イベントが子要素の href を変更するかどうかを検出する必要があります。合理的に聞こえますか?さて、これはどうですか:

<script>
    function switcher() {
       window.location = "www.somewhereelse.com";
       return false;
    }
</script>
<body onmousedown="switcher()">
    <a href="www.google.com">google</a>
</body>

window.locationそのため、onmousedown イベントによってトリガーされる in 関数にも注意する必要があります。それでも合理的に聞こえますか?onmousedown イベントでリンクを完全に削除し、それを新しい要素に置き換えてから、それをクリックするとどうなりますか。私は例を思いつくことができます。

重要なのは、Javascript を使用して、ステータス バーを使用している人々を誤った方向に誘導することができるということです。信頼するべきではありません。信頼できるのは URL だけです。

このブラウザを変更するには、発生する可能性のある他のイベントよりも優先度の高いクリック時にリンクに set href 値を与える必要があります。基本的に、アンカー タグでマウス イベントを無効にします。彼らはおそらくこれをしないだろうと思いきや、すでに存在するアプリケーションがあまりにも多く壊れてしまうでしょう。

編集:あるいは、リンクのハイジャックの可能性を検出してユーザーに警告するさまざまな方法を提案している人々を見てきましたが、まだ実装されていません。

于 2011-08-26T16:13:16.690 に答える
3

私たちの多くが技術に詳しくない人に与えたアドバイス (フィッシングの被害に遭わないように、クリックする前にリンク先を確認してください) は役に立たなくなったようです。

「チェック」とは、ブラウザーの「プレビュー」リンクが下部のステータス バーに表示されることを意味する場合は、正しいです。リンクが主張している場所に実際に移動しているかどうかを確認するには、それだけでは十分ではありません。たとえば、ページで以下の jquery スクリプトを実行すると、リンクの実際の href ターゲットが何であるかに関係なく、すべてのリンクが google.com に移動します。

$('a').click(function(evt){evt.preventDefault();window.location.href="http://google.com"})
于 2011-08-26T15:05:23.507 に答える
2

フィッシング Web サイトはこれを悪用できませんか?

Facebookは、前述のjavascriptを呼び出す必要がある場所であるため、そうではありません。ユーザーは、JavaScript をタグに埋め込む最初の場所で信頼できないソースに移動する必要があります。

于 2011-08-26T14:32:59.590 に答える