2012-03-05 81 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