2016-12-28 1 views
0

は:オーバーライド後にWindow.alertを再度有効にすることはできますか?私はページのオーバーライドのwindow.alertボックスがある場合

Window.alert = function() {} 

を私はJavascriptへのアクセス権を持っている場合、私は警告ボックスを再度有効にすることができますか?

+0

種類です。空の隠れたiframeのウィンドウオブジェクトの警告メソッドを取得/参照することができます。しかし、それは解決策ではなく、ハックです。なぜあなたは正確にこれを必要としますか/これは何のために必要ですか? – Thomas

+0

これは、開発者がそれが安全であると仮定した場合です。しかし、オーバーライドが実行された後にXSSがその部分を制御する場合、XSSがあると、攻撃者はWindow.alertを再アクティブ化できますか? –

+1

disable: 'window.alert =(str)=> console.log(" alert: "、str);' 注入: 'blert = document.body.appendChild(document.createElement(" iframe "))。contentWindow .alert; ' test:' alert( "foo"); blert( "bar") ' – Thomas

答えて

1

元のアラート機能を別の場所に保存しておき、それを元に戻しておくと思います。私はちょうど、アラート機能を取得するために、新しいウィンドウを開くということを知りませんが、その関数はネイティブコードであるので、それを超える閉鎖されていたら、することはできません

var originalAlert = window.alert; 
 

 
window.alert = function(stuff) { 
 
    console.log('alert invoked'); 
 
} 
 

 
alert(); // displays a message in the console 
 

 
var newWindow = window.open(); 
 

 
window.alert = newWindow.alert; 
 

 
newWindow.close(); 
 

 
alert(); // alerts a message

このようなクレイジーなハックなしでそれを取り戻す。少なくとも私が知っていることではない。

+0

ありがとうございます。オーバーライドが完了した後にコードの部分だけを制御するとどうなりますか? –

+0

元のアラート機能にアクセスできないという意味ですか? –

+0

正しいです、私はオーバーライドが起こった後にJavascriptを制御します。 –

関連する問題