我們有一個ASP.NET/C#網站。我們的開發人員在亞洲離岸,我剛剛發現他們已經在網站前端放置了原始SQL。SQL注入漏洞
我很擔心我們現在很容易受到SQL注入攻擊。有誰知道我如何檢測網站上的漏洞,以及關閉這些漏洞的最佳方式是什麼?
我們有一個ASP.NET/C#網站。我們的開發人員在亞洲離岸,我剛剛發現他們已經在網站前端放置了原始SQL。SQL注入漏洞
我很擔心我們現在很容易受到SQL注入攻擊。有誰知道我如何檢測網站上的漏洞,以及關閉這些漏洞的最佳方式是什麼?
試圖從正面可能幫助檢測漏洞,但真的,你應該看看代碼,尤其是所有與DbCommand,SqlCommand等有關的代碼。關鍵點,正如你清楚的知道的,絕不會把用戶輸入連接到一個查詢中,而是將它們參數化。可以使這個參數設置變得容易 - 或者至少比手動操作更容易。例如,如果您有:
using(var cmd = conn.CreateCommand()) {
cmd.CommandText = "delete from Orders where id = " + id;
cmd.ExecuteNonQuery();
}
然後像短小精悍點網工具可以讓你做這樣的事情:
conn.Execute("delete from Orders where id = @id", new {id});
這是少代碼,很大程度上是複製粘貼,而是完全注射安全,並允許查詢 - 計劃重用。
先看看這篇文章:How To: Protect From SQL Injection in ASP.NET
我會確保所有你要麼使用存儲過程exlusively或者如果你有regualr SQL命令你使用它們只與paramters永不動態構建CommandText property
的內容嗯,我會命令他們向您發送的源代碼並執行代碼視圖(或有一個由相對experiend開發完成。
第一件事就是從前端和後端刪除所有內聯(原始)SQL,並且只使用存儲過程將值作爲參數傳遞 – 2011-12-16 10:48:53
前端在like中......在表單中作爲隱藏輸入和東西? – Corbin 2011-12-16 10:49:43
是,如表單/頁面上的輸入字段 – Rup 2011-12-16 10:51:10