2011-11-14 18 views
1

以下は理論的な質問です。誰かが答えを提供できることを願っています。理論 - JavaScriptリンクのリダイレクトセキュリティの問題

私は少しを探求し、次は非常に(危険な)ことが可能であることを発見しました:

$('#link').click(function() { 
    window.location = 'http://www.malicious-example.com'; 
    return false; 
}); 

As seen in this live example.


今ではJavaScriptで非常に鋭いではないかもしれないが、これは巨大なセキュリティホールのように思えます。つまり、ブラウザは実際にはhttp://google.comにリンクしていると考えて、最後にhttp://www.malicious-example.comにつながります。

この問題に関する情報はありますか?世話をする措置はありますか?

+0

「フィッシング」という広い用語は、あなたが取り組もうとしているものだと思います。 – check123

+0

これが問題になった場合は、javascriptを使用しないでください – david

+0

セキュリティホールではなく、使い勝手の良いデザインです。 – davin

答えて

2

それについては、あまり行われていないし、正直言って私はほとんど関心を見ることはできません。ほとんどの場合、ウェブページにアクセスするのは害であることはほとんどありません。サイトがそうした場合、ページが読み込まれるとすぐにユーザーをリダイレクトするだけです。

JavaScriptでは、主にアラートやページの変更をキャンセルする機能に問題がありましたが、最も適切なブラウザでは様々な方法で恩恵を受けています。たとえば、2つのアラートが非常に迅速に行われた場合は、それ以上のアラートをすべてオフにするオプションがあり、ブラウザがユーザーの離脱を停止しようとしていることをブラウザが検出してメッセージを出力します。

+0

「ウェブページをほとんど訪問してもほとんど有害ではない」 - 真実ではない。私はあなたにウェブページを訪問させて、あなたの銀行へのリクエストを開始するためにJSにページを貼り付けます。リクエストが 'POST/transfer?to = attacker&amount = 99999'の場合、あなたの銀行がこの問題に対処する特定の手順を踏んでいない限り、攻撃者は転送を開始することができます。これはクロスサイトリクエスト偽造と呼ばれ、ウェブページを訪問したばかりの1つの方法は非常に有害である可能性があります。 – hdgarrood

+0

私の「まれに」私の主張は真実です。 CORSはそれがPOSTリクエストで起こるのを防ぎます。あなたの銀行がGETリクエストを使用して単一のステップで振込を行った場合、イメージを使用することができますが、そのような銀行のウェブサイトが稀ではなく、見つけることができないと言っても構いません。 –

0

これは、純粋なhtml Webページとjavascriptページの違いを非常によく表しています。 JavaScriptを使ったWebページは、実際には小さなプログラムです。このプログラムを実行するときは、ある程度プログラマを信頼する必要があります。プログラマはあなたが示すようにリンクを "再プログラム"するかもしれませんが、それ以上のことをすることができます。彼はあなたがリンクをクリックするのを待つ必要はありません。彼は、その行動を、画像上または他の完全に無邪気な行動の上にマウスを置くことに結びつけることができる。

Javascriptは強力な言語です。それはそれを便利にしますが、他のプログラミング言語で書かれたプログラムと同じように潜在的に危険です。