我一直在試圖確保我的代碼不容易出現臭名昭着的SQL注入攻擊。這個問題涉及到查詢字符串,遺留代碼,我管理有哪些應用內聯SQL實例:用於查詢字符串的SQL注入技術
string query = @"SELECT * FROM [Order]
WHERE ([Id]=" + Request.QueryString[@"oid"] + ");";
顯然,這是不好的,它會採取攻擊。我的問題是足夠的嗎?
command.Parameters.AddWithValue("@OrderId", Request.QueryString[@"oid"]);
所以現在查詢有一個參數,它正在傳遞一個值。我知道它有某種形式的編碼。但是,這是否足以像任何惡意攻擊者利用該查詢字符串一樣?那麼我應該在查詢字符串上做Encode
嗎?這樣它會安全地編碼,以避免被進一步利用?
關於此事的一些澄清將有所幫助。
是的,這就夠了。 – Zer0 2014-09-04 16:49:33
你應該看看[我們可以停止使用AddWithValue()了嗎?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/)並停止使用'.AddWithValue()' - 它可能會導致意想不到的和令人驚訝的結果... – 2014-09-04 16:57:10