缘起 上月底到合肥参加了owasp top10网络安全宣讲。回来后结合在开发中遇到的问题整理并在部门内部做了一次分享,以下是分享内容。 01注入 描述 注入漏洞发生在应用程序将不可信的数据发送到解释器。需要考虑任何向系统发送不信任数据的人。 场景 String query = “SELECT * FROM user WHERE user_id =‘“ + request.getParameter(”id“) + ”’”; 在该案例中,构造Web请求时,将参数id设为“’ or ‘1’ = ’1”,将得到下面的语句,绕过user_id的条件判断得到所有用户信息。 SELECT * FROM user WHERE user_id = ’’ or ‘1’ = ‘1’ 避免SQL注入,一般使用PreparedStatement进行数据库操作,将SQL语句进行预编译,经过预编译后,传入的参数将被识别为带一对引号的字符串而不是带有sql关键字的语句。 怎么做 工作中使用到的Mybatis提供两种传参数写法: select * from user where name ….