アカウント名:
パスワード:
で、失敗時の-1を"開く"を選択したと誤認すると……
いや、今回のこれがそうだとは思いませんが。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日々是ハック也 -- あるハードコアバイナリアン
ほかにも… (スコア:5, 興味深い)
同感なんですが、根本的なハナシ、
この動作が、大量処理を強要した結果、ダイアログの応答を誤認して、ある意味正常にダウンロード対象を保存し実行まで処理を継続してしまうのなら、ブラクラ攻撃以外にも大きな脆弱性が存在したりしませんかね?
IEにとどまらず、もしかしたらダイアログAPI、果てはウインドウ管理そのもの、の問題かも…。ダイアログを大量に出すように任意のアプリケーションを誘導できさえすれば、誤動作に導けそうな気がしてしまいます。
みんつ
Re:ほかにも… (スコア:3, 参考になる)
で、失敗時の-1を"開く"を選択したと誤認すると……
いや、今回のこれがそうだとは思いませんが。
Re:ほかにも… (スコア:0)
Re:ほかにも… (スコア:0, すばらしい洞察)
Re:ほかにも… (スコア:2, 参考になる)
たぶん ダイアログの応答誤認ってのは違うと思う
Re:ほかにも… (スコア:0)
Re:ほかにも… (スコア:0)
すでにhttpsじゃないサイトを読み込んでるよね。
あれは平気なの?
Re:ほかにも… (スコア:0)
対策はこんな感じかな・・・とりあえずリソース不足は (スコア:1)
すべてのダウンロードダイアログに終了指示を出す(Win32用)。
メッセージループ(一部)
switch (msg) {
case WM_CREATE:
SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
SetTimer(hWnd,1,3000,NULL); //3秒間隔でチェックして
break;
case WM_TIMER:
j++; // jはスタティックint=0
oldi=i;
i=0; // iはグローバルint
EnumWindows((WNDENUMPROC)EnumWindowsProc, NULL);
while((i-oldi)>2 && j>1){ //ウィンドウが3個以上増えていれば
hwndIE=FindWindow(NULL,"ファイルのダウンロード");
if(hwndIE == NULL) break;
SendMessage(hwndIE,WM_CLOSE,0,0L); //ダウンロードダイアログをすべて閉じる
}
InvalidateRect(hWnd,NULL,NULL);
break;
・
・
・
}
でもって、ウィンドウを数える関数はこんな感じ。
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
char nam[256],clas[256],str[256];
GetWindowText(hwnd, nam, sizeof(nam));
GetClassName(hwnd, clas, sizeof(clas));
if(!nam[0]) return TRUE;
if(!IsWindowVisible(hwnd)) return TRUE;
i++;
return TRUE;
}