多条件查询拼接sql语句如何防止sql注入

abc12346579 2014-12-05 06:32:43
假如有四个条件 可以任意输入1到4个条件取交集 求解
...全文
513 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
smthgdin_020 2014-12-06
  • 打赏
  • 举报
回复
要防止sql注入就不要使用拼接。改用参数化查询,或者使用像linq这类的技术。
abc12346579 2014-12-05
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
在设计“查询”界面时,会让用户输入各种数值常量值。例如“姓名、地址、备注、商品编码、数量、开始日期、结束日期、省份、性别、系统最低版本号、系统最高版本号”等等,这些都是常量,而不是让用户输入什么sql。 你的程序才应该生成sql语句。这时候,你应该验证用户输入的类型正确,例如把用户输入的日期转换为 DateTime 类型的数据,把用户(通过下拉列表)选择的性别转成 bool 型数据,把数量转成 int 型数据,并且按照 t-sql 的语法规范(假如你使用 sql server 的话。其它关系数据库也类似)应该将字符串常量中的单引号转换为两个单引号,做完了这一切,才应该拼接 sql 语句!
如果拼接sql的话 还是可以sql注入的 假如替换了东西 万一被替换的是关键部分怎么办 参数化 如果有的常量值没有输入 那参数就没有值 就会抱错了
threenewbee 2014-12-05
  • 打赏
  • 举报
回复
拼接sql就不可能避免sql注入,要避免sql注入就使用参数。
threenewbee 2014-12-05
  • 打赏
  • 举报
回复
拼接sql就不可能避免sql注入,要避免sql注入就使用参数。
  • 打赏
  • 举报
回复
在设计“查询”界面时,会让用户输入各种数值常量值。例如“姓名、地址、备注、商品编码、数量、开始日期、结束日期、省份、性别、系统最低版本号、系统最高版本号”等等,这些都是常量,而不是让用户输入什么sql。 你的程序才应该生成sql语句。这时候,你应该验证用户输入的类型正确,例如把用户输入的日期转换为 DateTime 类型的数据,把用户(通过下拉列表)选择的性别转成 bool 型数据,把数量转成 int 型数据,并且按照 t-sql 的语法规范(假如你使用 sql server 的话。其它关系数据库也类似)应该将字符串常量中的单引号转换为两个单引号,做完了这一切,才应该拼接 sql 语句!
  • 打赏
  • 举报
回复
你要是让人家输入sql,那就相当于超市敞开大门让顾客把东西搬回家,再来讨论“如何防止盗窃”就没有意义了。
  • 打赏
  • 举报
回复
引用 楼主 abc12346579 的回复:
假如有四个条件 可以任意输入1到4个条件取交集 求解
你的“任意输入条件”是什么意思? 如果说随便输入sql,那么这其实根本不需要注入,你都随便让人家写代码了,还要想什么“注入”方式干什么?直接干就行了。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧