微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

系统或配置设置的外部控制CWE ID 15

如何解决系统或配置设置的外部控制CWE ID 15

在Veracode中扫描应用程序时,我们遇到了安全威胁问题。获得了“系统或配置设置的外部控制(CWE ID 15)”。

报告扫描 using (var connection = new sqlConnection(connectionString))

我们正在通过传递连接字符串来检查sqlConnectionExists”

string sqlConnString = sqlHelper.GetsqlConnectionString(input.ServerName,dbname,isWinAuth,input.UserName,input.Password);
if (!DBUtil.ChecksqlConnectionExists(sqlConnString))
{
_ValidationMessage += "Database Unreachable \n";
isValid = false;
}

public static bool ChecksqlConnectionExists(string connectionString)
        {
            bool isExist = false;
            try
            {
                using (var connection = new sqlConnection(connectionString))
                {
                    connection.open();
                    connection.Close();
                    isExist = true;
                }
            }
            catch (Exception ex)
            {
                Logger.Instance.Log(LogLevel.EXCEPTION,"ChecksqlConnectionExists Exception : " + ex.Message);
            }
            return isExist;
        }

public static string GetsqlConnectionString(string servername,string db,bool isWinAuth,string username,string password)
        {
            System.Data.sqlClient.sqlConnectionStringBuilder builder = new System.Data.sqlClient.sqlConnectionStringBuilder();
            builder["Data Source"] = servername;
            builder["Initial Catalog"] = db;

            if (isWinAuth)
            {
                builder["Integrated Security"] = "sspI";
                builder["Trusted_Connection"] = "Yes";
            }
            else
            {
                builder["Persist Security Info"] = false;
                builder["User ID"] = username;
                builder["Password"] = password;
            }

            return builder.ConnectionString;
        }

在这一行using (var connection = new sqlConnection(connectionString))中,我们在安全扫描中遇到了错误。您能否请一些提供解决此Veracode错误的建议。

解决方法

Veracode检测到input.ServerName,input.UserName和input.Password由用户控制,这是一种风险。

确保实施验证-如果可能,将其与白名单或已知的预定义服务器名称进行比较。另外,检查输入的(注入的)“最小池大小”是否大于预期值。使用框架类,例如使用SqlConnectionStringBuilder的框架类

随后建议将此检查作为mitigation

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。