我正在使用Windows小工具中的API来启动网址,但我知道有关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') );