1

(对不起,如果这是一个愚蠢的问题......)

Veracode 报告我的网站存在与使用 web.config 中的连接字符串有关的安全问题。

这是我的代码。

Public Function ExecuteScalar(ByVal sql As String) As Object
    Dim obj As Object = Nothing

    Try
        Dim connStr as String = ConfigurationManager.ConnectionStrings("mydatabase").ConnectionString
        Using conn As New SqlConnection(connStr)   '''Veracode reports the issue come from this line
            conn.Open()
            If conn IsNot Nothing Then
                '''execute my sql
            End If
        End Using

    Catch ex As Exception
        Throw ex
    End Try

    Return obj
End Function

Veracode 说:

对 system_data_dll.System.Data.SqlClient.SqlConnection.!newinit_0_1() 的调用允许对系统设置进行外部控制。该函数的参数是使用用户提供的输入构造的,这可能会中断服务或导致应用程序以意想不到的方式运行。!newinit_0_1() 的第一个参数包含来自变量 connStr 的污染数据。受污染的数据源自之前对 system_web_dll.system.web.httprequest.get_item、system_data_dll.system.data.common.dbdataadapter.fill、system_data_dll.system.data.sqlclient.sqlcommand.executescalar 和 fmmobile8_dll.virtualcontroller.vc_wcfentry 的调用。

补救措施:

绝不允许用户提供或其他不受信任的数据来控制系统级设置。始终验证用户提供的输入以确保其符合预期格式,并尽可能使用集中的数据验证例程。

CWE 报告了相同的用法:http: //cwe.mitre.org/data/definitions/15.html

好的,Veracode 的建议说我应该在使用它创建 SqlConnection 对象之前检查连接字符串的格式。

我还向谷歌教授询问了如何检查连接字符串的格式。但是返回的结果说我们应该创建 SqlConnection 对象,然后打开它。

如果响应正常,则连接字符串也表示有效格式。否则,连接字符串无效。

不幸的是,Veracode 不接受这个答案。

所以,我的问题是:

我们是否应该在创建 SqlConnection 对象之前检查连接字符串的格式(如 Veracode 所说)?如果是,如何?

4

2 回答 2

2

问题不在于连接字符串的格式,而在于它可能被不希望的人控制。例如,攻击者可能能够更改您的 web.config 并让您的应用程序连接到假数据库以提供假数据。请注意,此类攻击者可能是您组织的内部人员(心怀不满的 IT 运营员工),或者是已经获得一定级别访问权限的外部攻击者。

所以问题是你是否根据你的威​​胁模型信任你的 web.config 文件。可能您这样做有几个原因(您有良好的流程来降低风险),在这种情况下,这将在 Veracode 术语中“通过设计降低”。

基本上,这只是一个警告,提醒您注意 web.config 在某种意义上是您的应用程序外部的,并且可以由比您最初想象的更多的人进行更改,并且无意中更改它可能会导致不需要的结果。

于 2016-11-28T11:25:39.147 回答
1

我在使用 Veracode 时遇到过类似的问题,他们告诉我要确保 Web.config 文件已加密。

您可以通过部署应用程序的服务器上的一些命令行提示操作来执行此操作。

 aspnet_regiis -pe "connectionStrings" -app "/" -site 1

或者如果您想将安全性扩展到 appSettings 部分

 aspnet_regiis -pe "appSettings" -app "/" -site 1

您可以通过打开 IIS 并转到站点的高级设置来获取站点编号。它是标记为“ID”的字段

这是一篇 MSDN 文章更详细地解释: https ://msdn.microsoft.com/en-us/library/zhhddkxy.aspx

于 2018-08-08T18:47:09.900 回答