私は Windows ガジェットの API を使用して URL を起動していますがeval()
、System.Shell.execute(); などの最悪でより危険なものについての破壊力を知っています。
しかし、いくつかの調査の結果、execute() を使用せずにデフォルトのブラウザーで URL を起動するより良い方法はないと思います。URL はユーザー入力から取得されるため、ユーザーが悪意のあるコードを実行するのを防ぐにはどうすればよいですか? 私のコードは安全ですか、それとも悪用される可能性がありますか? cmd.exe /c REG QUERY HKCU etc
管理者権限でcmd.exeを起動するようなことを防ぎます。
function openURL(url){
var protocol=new Array();
//Allowed protocols to execute
protocol[0]='http://';
protocol[1]='https://';
protocol[2]='ftp://';
protocol[3]='search-ms:query=';
for(var i=0;i<protocol.length;i++){
if(url.indexOf(protocol[i])==0){
System.Shell.execute(url);
break;
}
}
}
window.open(); //doesn't work (only open IE);
編集:
この 2 つのプロトコルを許可することは安全file:///
ではなく、javascript:
実行できる例:
file:///c:/windows/system32/ping.exe
javascript:void( window.open('http://file:///c:/windows/system32/ping.exe','','_blank') );