SQL注入

好奇都是要学的 2018-03-07 11:57:01
公司接了个新项目,为了快速开发用的拼接SQL。 但是很容易就被注入。 然后把关键字都替换成空,判断长度返回true 和false ,但是这样又造成了客户在添加简介 用英文描述的时候出错。 然后我想把关键字 前后都加上&符号存入数据库。在取出来查看的时候在把&去掉。或者注入的时候少不了输入单引号,我直接把'变成双引号不去管关键字了。 各位大神这样行吗? 会有什么后果
...全文
278 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2018-03-07
  • 打赏
  • 举报
回复
引用 4 楼 wang2129929 的回复:
[quote=引用 3 楼 yenange 的回复:] 用参数是最基本的保障,没有其它办法100%能做到不出问题。 少扯什么快速开发, 不用参数能增加多少开发量? 为了擦快速开发的PG, 你得花多少时间? 为这个不高明的做法, 你得搞一些弥补的不高明而且不敢保证的东西, 值吗? 如果最后还是被人家攻破, 你负得了这个责吗?
公司提供的架构就是这样的。 我就是在这个基础上来写。 只能是尽力做到不被。 你可以说这样行不行。 不行的话, 还怎么能注入我在想办法堵住。 否则让我重写他底层的连接?[/quote] 麻袋绣花——底子差 你要如何在一个破烂的玩意上搞出一个既安全又高效的东西? 如果一定要做到, 无非就是加一堆的判断, 程序的效率何在? SqlHelper到处都是, 非得拼SQL? 如果不想用 SqlHelper , jdbc, 还有众多的 ORM 框架, 比如 .net 的 Entity Framework, java的 Hibernate 框架。 这种拼SQL不用参数的公司, 没前途, 要么你动手改造 , 要么走人去其它公司学点新东西吧。
  • 打赏
  • 举报
回复
引用 3 楼 yenange 的回复:
用参数是最基本的保障,没有其它办法100%能做到不出问题。 少扯什么快速开发, 不用参数能增加多少开发量? 为了擦快速开发的PG, 你得花多少时间? 为这个不高明的做法, 你得搞一些弥补的不高明而且不敢保证的东西, 值吗? 如果最后还是被人家攻破, 你负得了这个责吗?
公司提供的架构就是这样的。 我就是在这个基础上来写。 只能是尽力做到不被。 你可以说这样行不行。 不行的话, 还怎么能注入我在想办法堵住。 否则让我重写他底层的连接?
吉普赛的歌 版主 2018-03-07
  • 打赏
  • 举报
回复
用参数是最基本的保障,没有其它办法100%能做到不出问题。 少扯什么快速开发, 不用参数能增加多少开发量? 为了擦快速开发的PG, 你得花多少时间? 为这个不高明的做法, 你得搞一些弥补的不高明而且不敢保证的东西, 值吗? 如果最后还是被人家攻破, 你负得了这个责吗?
  • 打赏
  • 举报
回复
引用 1 楼 roy_88 的回复:
参照 注入相关精华贴 http://bbs.csdn.net/topics/290032853
这个帖子我看过, 大神能否看下我的问题, 在我问的问题内告诉下我的后果。 比如他输入select 我给他替换成&select& 然后存入数据库 或者就是把他输入的单引号替换成双引号
中国风 2018-03-07
  • 打赏
  • 举报
回复
参照 注入相关精华贴 http://bbs.csdn.net/topics/290032853
  • 打赏
  • 举报
回复
引用 5 楼 yenange 的回复:
[quote=引用 4 楼 wang2129929 的回复:] [quote=引用 3 楼 yenange 的回复:] 用参数是最基本的保障,没有其它办法100%能做到不出问题。 少扯什么快速开发, 不用参数能增加多少开发量? 为了擦快速开发的PG, 你得花多少时间? 为这个不高明的做法, 你得搞一些弥补的不高明而且不敢保证的东西, 值吗? 如果最后还是被人家攻破, 你负得了这个责吗?
公司提供的架构就是这样的。 我就是在这个基础上来写。 只能是尽力做到不被。 你可以说这样行不行。 不行的话, 还怎么能注入我在想办法堵住。 否则让我重写他底层的连接?[/quote] 麻袋绣花——底子差 你要如何在一个破烂的玩意上搞出一个既安全又高效的东西? 如果一定要做到, 无非就是加一堆的判断, 程序的效率何在? SqlHelper到处都是, 非得拼SQL? 如果不想用 SqlHelper , jdbc, 还有众多的 ORM 框架, 比如 .net 的 Entity Framework, java的 Hibernate 框架。 这种拼SQL不用参数的公司, 没前途, 要么你动手改造 , 要么走人去其它公司学点新东西吧。 [/quote] 大神能不所问非所答吗? 我现在只是想请教屏蔽了单引号或者替换了单引号能不能避免被注入如,若果不行清举个例子, 这才是帮助我。你跟我说架构,换公司能帮助我现在的工作吗? 现在代码就是 string strSql = "select * from ShopCommodity where 1=1"; if (txtShopGoodName.Text.Trim() != "") { strSql += " and ShopGoodName like '%" + txtShopGoodName.Text + "%'"; } 我就想知道 这个文本框里如果输入了单引号, 我把单引号替换成2个单引号 是不是就可以防止注入了。 如果不行,请指教为什么。

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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