在Winforms项目中担心SQL注入是否有任何意义?

时间:2010-01-12 23:33:12

标签: winforms sql-injection

在SO和其他地方,几乎不可能在示例代码中发布长串联SQL指令,而没有人礼貌地指出最好使用参数化输入和存储过程。

最近的示例here

但是担心Winforms项目中的SQL注入是否有意义?

3 个答案:

答案 0 :(得分:3)

是否有某些原因来编写安全的数据库代码?我不这么认为。

每个人都应该养成安全执行SQL的习惯,因此在编写公共应用程序时甚至不必考虑它。

还要考虑许多旨在私有的代码最终会在几个月或几年后公开访问。例如,“嘿,这个用于库存报告的Intranet应用程序很有用,为什么我们不将它上传到我们的公共网站供我们的业务合作伙伴使用?”

  • 使用参数将未经验证的数据与SQL查询分开。
  • 您可以将经过验证的数据插入到SQL查询中。也就是说,如果你有代码来测试一个变量只能 是一个整数(例如),那么可以把它当作一个整数来安全。
  • 对于查询的其他动态部分(表名,列名,表达式等),您不能使用查询参数。但您可以将用户输入映射到硬编码字符串。例如。如果用户输入1,则按date列排序。如果用户输入2,请按status列排序。
  • 忽略那些说“只使用存储过程!”的程序员。好像这与防止SQL注入有关。它没有。

答案 1 :(得分:2)

现实生活中的史诗故事:中西部公司的Big Boss来看看项目进展情况。不确定它是如何发生的,但不知何故,一个新的订单从调度办公室下来,从未见过的客户。并且在Boss来看看的时候开始投入生产。他的姓氏是O'Shaughnessy。

使用参数化输入不仅仅是避免SQL注入。

答案 2 :(得分:1)

是的,出于你在其他项目中看到的所有原因。

您的用户群可能较小,但存在相同的危险。