2012-03-05 82 views
0

我有一个ColdFusion/SQL Server共享服务器托管服务的帐户,并通过了我认为是SQL注入攻击已经有针对性的。我几乎在每个表的每个字段都有一个JavaScript文件的绝对路径。它似乎隐藏了每个页面上的大部分文本和功能。我很幸运能够将数据库恢复到合理的点,但我需要防止这种情况再次发生。除了<cfqueryparam></cfqueryparam>之外,还有什么我可以做的吗?ColdFusion和SQL Server数据库安全

回答

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(); 
} 
+0

“相反,使用参数化查询和过滤用户输入。”通过参数化查询你是指存储过程?并且应该使用来处理用户输入的清理,对吗? – 2012-03-05 16:43:32

+0

@ d.lanza38没有,你可以建立参数化查询W/O使用存储过程。显然,在这的ColdFusion的VIA做''(在这里看到:HTTP://www.alocurto.com/blog4.php/ColdFusion/sql-injection-in-cold-fusion)。我可以提供一个使用参数的内联SQL语句的C#示例,但我不知道您是使用C#编写代码还是会发现它很有用。让我知道。 – Icarus 2012-03-05 16:54:23

+0

我已经做了一些C#过去,我应该能够理解它。我想看看你如何在C#中做到这一点。不过,我确实相信我在这个数据库上的所有sql语句都已经使用了。如果这是相同的,那么我不需要你发布它。谢谢。 – 2012-03-05 17:10:31