写出BUG的程序员可以理解,但写出有SQ...
写出BUG的程序员可以理解,但写出有SQL注入漏洞的程序员不可饶恕。今天看了一个实习生写的一段代码后我直接让他明天不用来了。
本来是让他开发一个很简单的功能,就是提供个查询用户信息的接口给前台,结果看了他写的下面这段代码我差点掀桌子。
String sql = 'select * from t_user where username=”+username;
这个拼接的SQL虽然简单,但很容易被SQL注入,危害极大,一旦有人知道这个漏洞,我们所有的用户信息都要被泄露。
我和实习生说了问题的严重性,他还觉得委屈,不知道为什么,我给他解释了什么是SQL注入,他才明白了过来。
代码里一定不要用这种带有变量的拼接SQL方式,一定要用预编译方式处理。
还好进行了代码评审,特别是没什么经验的新人写的代码一个字母都不能放过,说不定就有大坑。
这让我想起来了几年前CSDN用户数据泄露的事件,就是由于SQL注入漏洞引起的,太可怕了,我也是其中的受害者,很多网站应用的用户名、密码和CSDN是一样的,导致全部都被盗号了。
所以我现在看到这种SQL注入的漏洞的代码就非常生气,得严肃处理,让他长长记性,以后才不会犯这种严重错误。
你能不能举一个浅显生动的例子来说明一下!
我这里说的这个就很简单了啊,你想想当 username = " 1 or 1=1 " 这个sql执行是个什么结果。
你可能知道SQL注入原理,但是例子写错了。
usernam='1;delete from t_user;’就完蛋了
我就想问问,你前端名称不做规格限制不去空格的么?后端返回前端数据不做vo层的么。
不能什么都指望前端,后端代码同样要严谨
你们还在用jdbc???
spring的jdbcTemplate,蛮好用的[呲牙]
如果是老项目没有办法。是新项目新需求的话还是转用mybatis吧。这类远古的db操作当时,我几乎没有看到过了。今天有幸还能在头条看到[捂脸][捂脸]
不是老项目了,jdbcTemplate真的蛮好用,谁用谁知道。
根本就不是好用不好用的问题。而是规范的问题。将SQL直接写在代码中,就是不规范的。
规范都是人定的,谁说统一写在配置文件里面就规范了?
不用好的框架,水平又不够肯定出问题啊!你得让他们用成熟的框架,而不是自己去拼
主要是侵入性太大了,db层的操作就不该和业余或者其他逻辑耦合在一起。不过说不规范也不为过。目前用jdbc的公司,真的找不出来,简直是钉子户呀[泪奔][泪奔]
你要相信spring里面能发布出来的框架,它的性能和安全性一般都远超你自己写的代码。重复造轮子又造不好,还要天天盯着新员工的字母看何必呢
我也觉得好用,但是现在培训机构出来的都是mybatis。呵呵,我手下带的兵很多培训机构出来的,只会这个,为啥?培训快,好上手,开发速度快,但是应对复杂的功能就力不从心了。
先不说规范不规范[奸笑][奸笑],知道什么叫耦合不。不会连这么基础的都不知道吧。
难道解藕只能通过把SQL写到XML解决?没有mybatis之前这些工作是怎么做的?
spring 和 jpa就是规范;2021年了还在用xml就是老古董;不用orm框架而把sql写死到xml里与数据库强耦合就是落后[灵光一闪][灵光一闪]
jpa的@query、@nativequery、@namedquery都专门让你把sql写到代码里的,把sql和业务割裂也就mybatis在干了,mybatis几乎只有中国在用,你说jpa和mybatis的做法谁是主流?
mybatis确是只有亚洲在用[奸笑][奸笑],并不代表他比jpa弱,也不是老外在用jpa,那么jpa就强,莫要纠结这个问题,目前来说mybatis的优势比jpa. 强的
笑死我了[奸笑],所以你们公司还在用jdbc?可以发出来,防止各位踩雷。用jdbc的企业各种技术栈都得多老
你们对mybatis的认知,就停留在xml写sql里么。mybatis最主要优势的是半自动过,懂不[奸笑]
看业务需求而定,某些涉及大量数据操作的系统,某些批处理用jdbcTemplate我觉得比较合适,但是类似电商后台crud场景用mp不是更香?
用jdbc很低端?程序有漏洞难道你们没有测试人员?我已经很多年不编码,但是从来不会轻易否定一种框架,团队成员建议使用mybatis我也不反对,接纳更多事物才能更好发展,一味的排斥,呵呵,多年后,新的程序员也会排斥你。我们单位发展很好,2021年合同额30亿,你说气人不。
你得了吧。spring 去xml化听过没? 去了解下 mybatis puls
去xml和mybatis扯得上毛的关系。spring去xml指的是把springmvc复杂的xml配置去处,用新的springboot的简化xml的配置。
上一秒说我经验少,两句评论就露馅了[奸笑][奸笑][奸笑],就这?
用了一下mp,SQL功底都下降了,还是jdbc好,更直观,sql哪里出问题了,直接拿出来看就好了。