是否允许Windows进行注入? (SQL,JavaScript等)

时间:2014-01-23 12:46:38

标签: windows security sql-injection filenames code-injection

我想问一下,如果Windows允许的文件名对于SQL(Oracle和一般),JS,xml等注入是安全的。

检查并替换以下字符:/:*?“<> |(还有它们的ascii值等)。 长度也不能超过180个字符

在客户端(仅用于可用性)和服务器端(用于安全性)中安全地进行检查

文件名保存到oracle DB,它有一个类似oracle-> java-> xml-> xslt->浏览器的流程。

编辑:@Bohemian的答案指出了SQL注入的不安全部分(使用预准备语句可能会被禁止)。 JS或xml注入怎么样?(这可能导致XSS或通过xslt访问hdd)

1 个答案:

答案 0 :(得分:5)

不,这不安全。因为Windows允许在文件名中使用单引号'和半冒号; 注入SQL只需要这个组合:

SQL注入示例(在java中):

int userid = 999;
String filename = "foo';delete from users;update users set name = 'bar";
String sql = "update users set avatar = '" + filename + "' where id = " + userid;
System.out.println(sql);

输出:

update users set avatar = 'foo';delete from users;update users set name = 'bar' where id = 999

这是有效且有害的SQL。


Windows还允许文件名中的卷曲{}和方括号[]括号。我现在想不出一个例子,但似乎也可以注入javascript,也许如果传递给eval()。 (也许有人可以提供一个工作示例 - 随意在这里编辑一个)