【发布时间】:2019-02-22 10:03:35
【问题描述】:
我们有一个简单的 ASP.NET Web 应用程序,它通过上传页面读取 Excel 文件并在数据库中插入行。 用户正在上传一个填充 MSSQL 数据库中的表的 Excel 文件。
我们正在通过这样一个简单的代码块读取 Excel 文件。
Dim con As New OleDb.OleDbConnection()
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & filePath & ";Extended Properties=Excel 12.0"
'Get data from Exel into a DataFile
Try
con.Open()
Dim cmd As New OleDb.OleDbCommand("SELECT * FROM [Sheet1$]", con)
Dim da As New OleDb.OleDbDataAdapter()
da.SelectCommand = cmd
Dim ds As New DataSet()
da.Fill(ds, "DataSet")
Return ds.Tables(0)
Catch ex As Exception
HttpContext.Current.Session("Error") = "err: " & ex.Message
Throw ex
Return New DataTable()
Finally
con.Close()
End Try
通过我们的应用程序读取恶意 Excel 文件会感染运行页面的服务器吗?
Jet Engine 功能是否强大到在通过代码访问行时可能会运行嵌入在受感染的 Excel 文件中的恶意代码?
【问题讨论】:
-
您的真正问题是什么? Jet 提供程序不执行宏。您甚至不需要它来读取
xlsx文件,这是过去 12 年使用的格式。xlsx是一个 xml 文件的 zip 包。您可以使用 Open XML SDK 或 Epplus 之类的库来读取它,而无需安装 Jet 驱动程序 -
您应该担心如何将数据插入数据库。如果您创建动态 SQL 查询,则 SQL 注入攻击只需在字段中写入
'); drop table users;--
标签: asp.net excel database vb.net security