当前位置: 首页 > news >正文

丽江网站开发网站后台程序

丽江网站开发,网站后台程序,如何网推,网站设置为信任站点前言#xff1a; 堕落了三个月#xff0c;现在因为被找实习而困扰#xff0c;着实自己能力不足#xff0c;从今天开始 每天沉淀一点点 #xff0c;准备秋招 加油 注意#xff1a; 本文章参考qax的网络安全java代码审计#xff0c;记录自己的学习过程#xff0c;还希望…前言 堕落了三个月现在因为被找实习而困扰着实自己能力不足从今天开始 每天沉淀一点点 准备秋招 加油 注意 本文章参考qax的网络安全java代码审计记录自己的学习过程还希望各位博主 师傅 大佬 勿喷还希望大家指出错误 1.SQL语句参数直接动态拼接 常见的的执行语句为Statement执行SQL语句 例如下面这段代码 % //驱动程序名 String driverName com.mysql.jdbc.Driver; //数据库用户名 String userName root; //密码 String userPasswd root; //数据库名 String dbName javasqltest; //表名 String ID 1//联结字符串 String url jdbc:mysql://localhost:3306/ dbName ?user userName password userPasswd; Class.forName(com.mysql.jdbc.Driver).newInstance(); Connection connection DriverManager.getConnection(url); Statement statement connection.createStatement(); String sql SELECT * FROM people where id ID ; ResultSet rs statement.executeQuery(sql); % 打印出来的结果如图下所示 数据库数据 我们发现 像这种情况就是由SQL语句参数直接动态拼接成的这样的话参数ID可控并且可以执行sql语句的拼接存在明显的SQL注入漏洞 String sql SELECT * FROM people where id ID ; 我们测试验证 一下 传入参数为   1 and 1 1 果然存在漏洞这样就有个严重 的问题 当输入1 or 1 1就会打印所有的表的数据 造成数据泄露 1 or 11 2.预编译有误 首先预编译处理就是将一些灵活的参数值以占位符?的形式给代替掉我们把参数值给抽取出来把SQL语句进行模板化。让MySQL服务器执行相同的SQL语句时不需要在校验、解析SQL语句上面花费重复的时间 public void test1() throws Exception {// 获取连接Connection connection DriverManager.getConnection(jdbc:mysql://localhost:3306/mybatis?useServerPrepStmtstrue, root, admin);String sql select * from user where id ?;PreparedStatement ps connection.prepareStatement(sql);ps.setInt(1, 1);// 执行查询,获取结果集ResultSet rs ps.executeQuery();//遍历查询结果集while (rs.next()) {System.out.println(rs.getObject(id)---rs.getObject(username));}rs.close();ps.close();}那么预编译有误这个很好理解就是使用错了编程方式也就是采用了动态拼接 上述代码就是典型的预编译错误编程方式虽然id参数使用了PrepareStatement进行SQL查询但是后面的usermame使用了SQL语句拼接的方式“sql and usermame like%”username .%;将username参数进行了拼接这样导致了SQL注入漏洞的产 生。传入的username值为“user% or T1#   3.order by 注入  就是即使是标准的预编译处理也难以防止sql注入因为某些情况下是不能使用预编译处理的只能采用字符串拼接处理 像order by 注入 原理 SQL中ORDER BY执行排序后面需要指定列名该列名是不能被引号包含的否则就会被认为是一个字符串。 所以进行ID拼接的时候就出现了 sql注入 4. %和_模糊查询 首先明白这两个通配符的作用 _任意一个字符 %任意0或多个字符。 下面举例 例如查询名字为root的用户 得到 我们填入r试试 查询不到 但是因为在java中预编译查询不会对%和_ 进行转义而它们又是like查询的通配符所以出现了漏洞我们输入  usernamer% 能够得到root的全部信息 所以只能手动过滤_和%  5.MyBatis中的#{}和${} 1、#{}表示一个占位符号 相当于 jdbc中的 ? 符号 #{}实现的是向prepareStatement中的预处理语句中设置参数值sql语句中#{}表示一个占位符即? 2、${}将传入的数据都当成一个字符串会对自动传入的数据加一个双引号。如select * from user where id #{user_id}如果传入的值是11,那么解析成sql时的值为where id11 就是说使用#{}方法更为安全 ${}方法不安全 因为在MyBatis中像order by 查询like查询in参数等都只能采用拼接方式 要确切的查询只能用到${}所以就会出现sql注入 所以得采用手动过滤的方法进行修复
http://www.sczhlp.com/news/199544/

相关文章:

  • 企业网站备案域名可以用个人的兰州网站优化公司
  • 备案成功后怎么做网站商务网站模板免费下载
  • 在哪可以找到做网站的新手做网站需要什么
  • 企业网站建设与管理期末考试阿里云个人网站建设方案书
  • 网站开发语言的选择聚美优品网站开发时间进度表
  • 在本地做改版如何替换旧网站会影响百度收录吗wechat in wordpress
  • 网站创建软件织梦如何做二级网站
  • 化妆品公司网站模板景安网站
  • 网站开发运营经理广州外贸网络推广
  • 延安网站建设费用随便编一个公司网站
  • 皮具网站建设做网站技术人员
  • 公司网站建设计入什么科目品牌网站建设预定大蝌蚪
  • 专门做蛋糕面包的网站阿里巴巴免费做国际网站
  • 湖南中虹羽建设工程有限公司网站安康网站建设公司报价
  • 北京南站停车场收费标准网页设计实验报告实验方法
  • 能直接看的网站有哪些wordpress 置顶 不显示
  • 网站专题页面设计规范做衣服网站有哪些
  • 响应式网站常用宽度成都住建局官网投诉
  • 做可以上传文件的网站扬州润扬交通建设集团网站
  • 网站外链建设可以提升网站赤峰做网站公司
  • 中国电子政务网站建设意见代理公司注册变更
  • 外贸网站宗旨做公司网站需要服务器吗
  • 聊城做网站多少钱seo商城
  • 网站备案太麻烦常见的网站攻击方式
  • 3g免费网站青岛关键词推广seo
  • 石基网站建设支付宝小程序开发教程
  • 江苏省示范校建设专题网站wordpress制作海报
  • 用自己服务器做网站用备案苏州建设网站公司在什么地方
  • 蓝色大气网站模板沈阳百度网站排名
  • 快捷网站建设西安seo网络优化公司