我需要在SQL查询中转义哪些字符

时间:2012-12-23 22:01:01

标签: c# sql sql-server-2008 escaping

插入字符串时需要检查和转义的字符是什么?

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管理数据库。

1 个答案:

答案 0 :(得分:22)

不要逃避他们。只是不要在SQL中包含值。而是使用参数化SQL 并直接为参数提供值。没有转义,没有引用,没有转换 - 也没有SQL注入攻击的风险。

有关示例,请参阅the documentation for SqlCommand.Parameters

您应该将此应用于所有值 - 而不仅仅是您预期具有“特殊”字符的值。它将代码(SQL)与数据(值)分开,避免了SQL注入攻击,并且还避免了不必要的转换(如果您不小心,这可能会导致日期/时间值和数字出现问题)。