是否足以禁止输入中的单引号以避免SQL注入?

okr*_*now 3 c# sql-server sql-injection

我继承了一个旧的软件,代码'在构造使用字符串连接的SQL语句之前检查用户输入是否包含单引号字符.

这是否足以避免SQL注入(除了样式不好)还是我必须立即采取行动并将其更改为参数用法?

You*_*nse 7

不,这还不够.

是的,您必须立即采取措施并将其更改为适用的参数用法.

您只需遵循一些指导原则即可:

  1. 永远不要注意任何注射.但请确保您已正确格式化 SQL文本.格式正确的文字是防错的 - 就像副作用一样 - 也是无懈可击的.
  2. 发现SQL查询由几种不同类型的文字组成的事实.每个都需要不同的格式,对所有其他格式不兼容和无用.
  3. 确保无条件地应用这种格式.准备好的陈述是唯一可以确定的方式.