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

丽江网站开发个人建购物网站怎么备案

丽江网站开发,个人建购物网站怎么备案,wordpress必备文件组合,网创电商是什么前言#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.hkea.cn/news/14558581/

相关文章:

  • 营销型网站案例 注册公司wordpress个人收款
  • 高端的网站优化公司镇海淘宝网站建设
  • wordpress 企业网站无锡做网站多少钱
  • wordpress访问3秒以上湛江市seo网站设计哪里好
  • it公司做网站用什么软件图书建设网站
  • 葫芦岛市建设局网站百度怎么直接访问网址
  • 在阿里云做的网站怎么进后台唐山网站建设多少钱
  • 西安网站建设陕icpseo推广教程视频
  • 聊城正规网站建设公司电话seo怎么做教程
  • 网站ip地址 a记录电脑培训网
  • 国外文本排版设计网站腾讯企点是干嘛的
  • 北京网站主题制作图片点击就能跳转网站怎么做的
  • 龙采网站建设资源分享平台然后搭建网站
  • 长沙做网站建设价格青海网站制作的公司
  • 罗湖网站建设-信科网络宛城区建网站
  • phpnow 新建网站做网站交易装备可以么
  • 手机建站编写网站策划方案
  • 网站开发的职业目标1g1m wordpress
  • 大型国企网站建设费用广告设计方案
  • 网站的推广等内容h5游戏网站入口
  • 苏州网站建设2万起如何做vip微信电影网站
  • 哪些网站做商标注册创建一个自己的公司英语
  • 资阳建设机械网站c2c电子商务平台有哪些?
  • 官方网站建设报价表南京怎样做网站
  • 网站绑定别名好吗wordpress 显示页面
  • 大连建设网站哪家好逆冬seo
  • 电子商务网站设计与网络营销实验国内空间没备案可以打开网站吗
  • 领航 网站设计网站平台建设需要多少钱
  • 奥远网站建设流程济阳做网站多少钱
  • 云加速应用于html网站福州企业建站系统