【发布时间】:2011-07-19 18:56:51
【问题描述】:
我有一个与 SQL Server 通信的 Web 应用程序。我没有对所有查询字符串进行硬编码,而是选择将它们存储在全局资源文件中。这被认为是不好的做法吗?
附带说明,当我这样做时,Visual Studio 对我大喊 SQL 注入的可能性,尽管这些查询已被参数化(更不用说资源文件中的“拼写”警告)。
【问题讨论】:
-
为什么你的应用中有查询字符串?你不应该使用存储过程吗,你的方法会调用存储过程?
-
这仅比将查询硬编码到您的 .cs 或 .vb 文件中稍微好一点 - 也就是说,这不是很好的设计。
-
不幸的是,我没有为这个应用程序使用存储过程的奢侈。我还有其他方法可以解决这个问题吗?
-
请记住,如果您不动态执行或连接结果,参数化查询仅在存储的 proc/sql 中更安全。如果您将字符串作为参数传递,然后执行 AND FOO='+@myvar 之类的操作,这仍然是个问题。不幸的是,我确实看到了这种事情。
标签: asp.net sql-server visual-studio-2010