我创建了一个流程,其中(注册的)用户可以上传(在客户端和服务器端验证之后)一个(使用非常不常见的扩展名压缩)访问数据库通过一个 asp.net 网络表单到我的服务器,它将位于一个很好的安全位置,直到晚上安排的 SSIS 包出现,以便将相关数据从访问 db 流向 sql 服务器。
之后,我的访问数据库被删除。该数据库不会有其他执行。访问未安装在服务器上。
当然,我已经进行了研究,但是我是否引入了 SSIS 可能触发的漏洞(例如访问数据库中的脚本?)?
先感谢您。
SSIS 可能使用 ODBC 或 OLEDB 来获取 Access/Jet/ACE 数据库中的数据,因此没有任何东西可以执行任何代码 - ODBC 和 OLEDB 除了数据和所有可以执行的危险函数之外一无所知SQL 语句被阻塞。
因此,如果没有安装 Access,不,这里没有真正的危险。如果您担心存在,您可以在打开文件之前使用 DAO 处理该文件,并删除 QueryDefs 集合和 Modules 文档集合中的所有内容。或者,您可以使用缓冲区数据库,只导入数据表,然后将其传递给 SSIS。
但我真的不认为 SSIS 只关注数据表。
顺便说一句,从来没有通过 Access 传播过任何病毒或漏洞利用,因此对 Access 漏洞的担忧被大大夸大了(因此,由于宏被阻止、沙盒模式以及从 A2007 开始,给最终用户带来了巨大的不便,需要定义可信位置)。
我同意大卫的观点(尽管使用“从不”这个词总是很危险的!)。您可能会考虑的另一件事是让在上传之前压缩数据库的人使用特定于每个用户的密码对压缩文件应用加密。
实际的加密不一定要特别强,尽管它会在您的通信被黑客入侵时有所帮助:关键是它可以识别发起访问上传的人。如果 SSIS 进程尝试依次使用每个已知密码打开它并且所有密码都失败,则可以认为该包已被某些未经授权的人引入系统,因此是可疑的。
这不是为了防止恶意代码,而是为了防止恶意数据进入您的系统。
hth
麦克风