【问题标题】:What are the characters that I need to escape in a SQL query我需要在 SQL 查询中转义的字符是什么
【发布时间】:2012-12-24 06:50:59
【问题描述】:

插入字符串时需要检查和转义哪些字符?

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

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

  • 我已经阅读了有关参数的信息,但还没有使用它。谢谢大家。我会把它放在我的代码中。
  • @KaushikDB 当您使用它时,您应该检查一下 LINQ。特别是因为它会自动为您参数化您的 SQL 查询。
  • 我已经使用了 sqlcommand.parameters,它的作用就像一个魅力。谢谢一群人。 @kittoes 我还将查看 LINQ。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-06-05
  • 2018-05-06
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多