アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
人生unstable -- あるハッカー
ほかにも… (スコア:5, 興味深い)
同感なんですが、根本的なハナシ、
この動作が、大量処理を強要した結果、ダイアログの応答を誤認して、ある意味正常にダウンロード対象を保存し実行まで処理を継続してしまうのなら、ブラクラ攻撃以外にも大きな脆弱
みんつ
対策はこんな感じかな・・・とりあえずリソース不足は (スコア: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;
}