2012-12-23 81 views
3

插入字符串時需要檢查並轉義的字符是什麼?我需要在SQL查詢中轉義什麼字符

INSERT INTO gamedata (gamename, url, dlink) 
VALUES ('mady's run', 'http://www.sdfa.com', 'http://extabit.com/sdf')</code> 

我該如何逃避這些角色?
我正在使用C#和SQL Server Management Studio 2008管理數據庫。

+4

如何使用參數並忘記轉義字符? –

+0

結帳這個鏈接的一個很好的例子..也有很多網絡上的例子.. http://stackoverflow.com/questions/1170676/storing-the-url-in-sqlserver-2005-using-c- sharp-codedata-sets – MethodMan

回答

22

不要轉義它們。根本不要在SQL中包含這些值。相反,使用參數化的SQL使用,並直接爲參數提供值。無需轉義,不引用,不轉換 - 並且不存在SQL注入攻擊的風險。

查看the documentation for SqlCommand.Parameters舉例。

您應該將此項應用於全部值 - 不只是您預期具有「特殊」字符的值。它將代碼(SQL)從數據(值)中分離出來,避免了SQL注入攻擊,並且還避免了不必要的轉換(如果不小心,它可能會導致日期/時間值和數字的問題)。

+5

不能滿足這個要求。 – Kittoes0124

+0

我已閱讀過有關參數,但尚未使用它..謝謝你們。我將把它放在我的代碼中。 –

+0

@KaushikDB當你在這裏,你應該檢查出LINQ。因爲它會自動爲你的SQL查詢提供支持。 – Kittoes0124