如何应对邪恶?在System.Shell.execute()之前验证用户输入
How to deal with evil? Validating user input before System.Shell.execute();
我正在使用Windows gadget的API来启动url,但我知道eval()
之类的东西的破坏力以及更糟糕和更危险的System.Shell.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);
编辑:允许这两个协议是不安全的file:///
和javascript:
可以这样做的例子:
file:///c:/windows/system32/ping.exe
javascript:void( window.open('http://file:///c:/windows/system32/ping.exe','','_blank') );
您的使用听起来像是Google Caja的潜在候选人。这是一个试图清除第三方JavaScript的项目,以使其安全运行。
相关文章:
- Angular2 Javascript 验证 输入数字而不是字符
- 在 Angular2 中构建多部分/表单数据 POST 请求并验证输入类型文件
- 如何通过 JavaScript 验证输入字段中的值
- jQuery 验证输入文本是否仅接受数字、单词或日期
- 如何javascript验证<输入类型=文件多个>如果浏览器不支持多个
- 用于验证输入的JavaScript正则表达式超过0个字符
- 验证输入字段和块字符
- Angularjs iu.mask带有日期的验证输入
- 验证输入,更新<td>属性以匹配验证状态
- 通过点击表单外的按钮,使用required和angularjs验证输入字段
- 基于自身输入变化的角度验证输入
- 使用 javascript 验证输入数组
- 年龄验证输入框 - 计算是否超过 18 岁
- JQuery 验证输入类型文件在服务器端失败
- 如何使用jquery或javascript验证输入框的内容
- JSF 和 RichFaces 用于实时验证输入框
- Javascript/Jquery:使用数字范围验证输入
- 如何在更改时验证输入字段并启用提交按钮
- 编码器点火器未验证输入文本
- 在复选框选择后验证输入类型文本