Я использую API из гаджетов Windows для запуска URL-адресов, но я знаю разрушительную силу таких вещей, как eval()
и худших и более опасных, System.Shell.execute ();
Но после некоторого исследования, я думаю, что нет лучшего способа запустить URL в браузере по умолчанию без execute (). Поскольку 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') );