提问人:BYU 提问时间:1/14/2021 最后编辑:BYU 更新时间:1/15/2021 访问量:82
RegularExpressionValidator 是否足够可靠,可以防止 SQL 注入?
Is a RegularExpressionValidator reliable enough to protect against SQL injections?
问:
我正在使用一个工具,该工具有助于了解我的代码的哪些部分可以进行SQL注入,并且该工具表明以下代码中存在漏洞:
Aspx 部分:
<asp:FileUpload ID="fuXlsWorkflow" runat="server" EnableViewState="true" />
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="<%$ Resources:Message,ERR_FORMAT%>"ValidationExpression="^([a-zA-Z]|\x20|\x2E|:|\\|[0-9])*\.(xls|xlsx)$" ControlToValidate="fuXlsWorkflow" />
aspx.vb
If Not fuXlsWorkflow.FileName.Equals("") Then
If xlsFile Is Nothing Or Not fuXlsWorkflow.FileName.Equals(xlsFile) Then
xlsFileTempPath = SantEnv.TempFolder & " " & fuXlsWorkflow.FileName
fuXlsWorkflow.SaveAs(SantEnv.TempFolder & " " & fuXlsWorkflow.FileName)
Try
getIdApplicationFromXls()
...
和
Private Sub getIdApplicationFromXls()
Dim myConnection As OleDbConnection
Dim myCommand As OleDbDataAdapter
dsIdApplication = New Data.DataSet()
Try
myConnection = New OleDbConnection("Provider=" & SantEnv.ExcelProvider & ";Data Source=" + xlsFileTempPath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'")
myCommand = New OleDbDataAdapter("select * from [Sheet1$]", myConnection)
myCommand.Fill(dsIdApplication)
Catch ex As Exception
cvError.Text = ex.Message
cvError.IsValid = False
Throw New Exception(ex.Message, ex)
End Try
...
基本上,我使用文件名打开 OleConnection,根据我使用的工具,这似乎是一个问题。我不明白的是应该已经阻止用户上传具有可疑名称的文件。asp:RegularExpressionValidator
当涉及到该代码块时,您有什么建议来避免在我的工具中出现该警告?
编辑: 这是该工具写给我的:
应用程序的 getIdApplicationFromXls 方法执行 SQL 查询 替换为 mycommand,位于 workflow\workflowList.aspx.vb 的第 201 行。这 应用程序通过嵌入不受信任的字符串来构造此 SQL 查询 到查询中,没有进行适当的清理。串联的字符串是 提交到数据库,在那里进行解析和执行 因此。
攻击者将能够将任意数据注入 SQL 查询,只需更改用户输入文件名,该文件名由 第 151 行的 EnvoieFichier_Click 方法 workflow\workflowList.aspx.vb。然后,此输入流经代码 到数据库服务器,无需清理。
这可能会引发 SQL 注入攻击。
答: 暂无答案
评论
^[a-zA-Z .0-9]*\.xlsx?$
(?i)[a-z .0-9]+\.xlsx?
^
$
(?i)
+
*