【问题标题】:Coldfusion and SQL Server database securityColdfusion 和 SQL Server 数据库安全性
【发布时间】:2012-03-05 15:39:44
【问题描述】:

我在 Coldfusion/SQL Server 共享服务器托管服务上有一个帐户,并且我认为是 SQL 注入攻击的目标。我在每个表的几乎每个字段中都有一个 javascript 文件的绝对路径。该脚本似乎隐藏了它所在的每个页面上的大部分文本和功能。我很幸运能够将数据库恢复到合理的程度,但我需要防止这种情况再次发生。除了<cfqueryparam></cfqueryparam>,我还能做些什么吗?

【问题讨论】:

    标签: security sql-server-2005


    【解决方案1】:

    推荐的解决方案是检查您的所有代码,并确保您没有通过字符串连接来构建您的 sql 语句。相反,使用参数化查询并清理用户输入。推荐用于您使用的任何类型的数据库。

    Take a look at this post.

    编辑 - 按要求提供 C# 示例:

    string sql = "insert into table_a (cola,colb,colc) values (@value_a,@value_v,@value_c)";
    
    using(SqlConnection conn = new SqlConnection("ConnectionString"))
    {
        conn.Open();
        SqlCommand command = new SqlCommand(sql,conn);
        command.CommandType = Commandtype.Text;
        command.Parameters.AddWithValue("@value_a",txtFieldAFromForm.Text);
        command.Parameters.AddWithValue("@value_b",txtFieldBFromForm.Text);
        command.Parameters.AddWithValue("@value_c",txtFieldCFromForm.Text);
        command.ExecuteNonQuery();
    }
    

    【讨论】:

    • “改为使用参数化查询并清理用户输入。”参数化查询是指存储过程吗?并且应该使用 处理清理用户输入,对吗?
    • @d.lanza38 不,您可以使用存储过程构建参数化查询。显然在 ColdFusion 中是通过 <cfqueryparam> 完成的(参见此处:alocurto.com/blog4.php/ColdFusion/sql-injection-in-cold-fusion)。我可以提供一个使用参数的内联 SQL 语句的 C# 示例,但我不知道您是否使用 C# 编写代码,或者您会发现它很有用。告诉我。
    • 我以前做过一点c#,应该能看懂。我想看看你是如何在 c# 中做到这一点的。但是我相信我在这个数据库上的所有 sql 语句都已经在使用 了。如果那是等效的,那么我不需要您发布它。谢谢。
    • @d.lanza38 表中包含无关数据的事实表明您的代码显然易受攻击。我发布的链接以及我在互联网上找到的其他一些链接都提到使用<cfqueryparam> 足以防止 SQL 注入,因此您要么没有检查所有代码,要么 ColdFusion 具有主要安全性洞。接下来我将发布我的 C# 示例。
    【解决方案2】:

    结帐<cfqueryparams> 标签:http://www.adobe.com/livedocs/coldfusion/7/htmldocs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=ColdFusion_Documentation&file=part_cfm.htm

    这是清理用户提交的 SQL 查询输入的方法。

    【讨论】:

      猜你喜欢
      • 2014-05-25
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      相关资源
      最近更新 更多