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

网站默认首页文件顺序WordPress 微信小程序登录

网站默认首页文件顺序,WordPress 微信小程序登录,专业外包,广告设计内容一、引言 在当今数字化时代#xff0c;数据库作为存储和管理数据的核心组件#xff0c;其安全性至关重要。SQL 注入是一种常见且极具威胁性的数据库安全漏洞#xff0c;它可能导致数据泄露、篡改甚至系统被完全控制。本文将深入探讨 SQL 注入漏洞的产生原因、表现形式以及如…一、引言 在当今数字化时代数据库作为存储和管理数据的核心组件其安全性至关重要。SQL 注入是一种常见且极具威胁性的数据库安全漏洞它可能导致数据泄露、篡改甚至系统被完全控制。本文将深入探讨 SQL 注入漏洞的产生原因、表现形式以及如何有效地解决这一问题。 二、SQL 注入漏洞的产生效果 在已知用户名的情况下攻击者可以通过输入特殊构造的密码利用 SQL 注入漏洞绕过系统的身份验证机制成功登录系统。例如原本需要正确的用户名和密码才能访问的系统攻击者只需输入特定的字符组合如 “aaaor11” 作为密码用户名已知就可以在不知道正确密码的情况下登录进去这显然严重破坏了系统的安全性和访问控制机制。 三、SQL 注入漏洞的产生原因 SQL 注入漏洞的产生主要源于应用程序在拼接 SQL 语句时没有对用户输入进行充分的验证和过滤。以常见的登录场景为例后台程序拼接 SQL 语句的代码通常如下 String sql select * from t_user where username username and password password;在这种情况下如果用户输入恶意的字符就会改变 SQL 语句的逻辑。比如当用户输入 “aaaor11” 作为密码时拼接后的 SQL 语句变为 String sql select * from t_user where username aaaor11 and password sfsdfsds;由于 “or 11” 恒为真无论密码是否正确该查询都能返回结果从而导致攻击者绕过了密码验证。 按照 AND 优先级高于 OR 的规则它会先计算 11 and password 123456 这部分然后再与前面的 username aaa 通过 OR 进行运算。 如果 11 恒为 true当 password 123456 结果为 false 时11 and password 123456 结果为 false 但由于前面有 OR 连接 username aaa 只要 username aaa 为 true 整个表达式的结果就为 true 这就可能导致不符合预期的查询结果也是 SQL 注入利用的一个原理基础。 另一种常见的恶意输入是 “aaa‐‐ ”拼接后的 SQL 语句变为 String sql select * from t_user where username aaa‐‐ and password sfsdfsdfs;“‐‐” 在 SQL 中是注释符这使得后面的密码验证部分被注释掉查询只验证用户名同样也实现了非法登录。 四、SQL 注入漏洞的解决方案 为了解决 SQL 注入漏洞我们可以使用PreparedStatement接口它是Statement的子接口具有以下优势 预编译功能PreparedStatement能够将 SQL 语句中的参数部分使用 “?”占位符来代替并先将编写的 SQL 语句发送到 MySQL 服务器端进行编译。编译后的 SQL 语句格式固定后续传入的任何值都会作为 “?” 的参数处理从而避免了恶意输入改变 SQL 语句逻辑的情况。具体使用方法 获取预编译对象通过Connection接口的prepareStatement(String sql)方法来预编译 SQL 语句。例如 Connection conn JdbcUtils.getConnection(); String sql select * from y_user where username ? and password ?; PreparedStatement stmt conn.prepareStatement(sql);设置参数值使用setXxxx()系列方法如setString()、setInt()等向 “?” 传入值参数的位置从 1 开始计数。例如 stmt.setString(1,username); stmt.setString(2,password);执行 SQL 语句根据 SQL 语句的类型使用executeQuery()方法执行查询操作返回结果集使用executeUpdate()方法执行增删改操作。例如 ResultSet rs stmt.executeQuery(); 五、示例代码分析 以下是一个完整的 Java 代码示例展示了如何模拟 SQL 注入漏洞以及如何使用PreparedStatement解决该问题 package cn.qcby.demo1;import cn.qcby.utils.JdbcUtils;import java.sql.*;/*** 演示SQL注入的问题漏洞* 在已知用户名的情况下通过sql语言关键字登录系统。密码随意输入的。* SQL注入产生原因是SQL语句的拼接利用SQL关键字产生效果。* 需要解决SQL注入的问题** 解决SQL注入问题采用SQL语句预编译的方式把SQL语句中的参数使用?占位符来表示先把SQL语句编译格式固定的。* 再给?传入值传入任何内容都表示值。数据库会判断SQL执行的结果。*/ public class JdbcTest4 {public static void main(String[] args) {// 模拟登录的功能有SQL注入的问题//String result new JdbcTest4().login(aaaor11, 1234sdf);//System.out.println(result);String result new JdbcTest4().login2(aaaor11, 123456);System.out.println(result);}/*** 采用预编译的方式解决SQL注入的问题* param username* param password* return*/public String login2(String username,String password){Connection conn null;// 预编译执行SQL语句对象PreparedStatement stmt null;ResultSet rs null;try {// 获取到连接conn JdbcUtils.getConnection();// 使用?占位符String sql select * from y_user where username ? and password ?;// 预编译SQL语句把SQL语句固定//Statement statement conn.createStatement();//statement不能防止sql注入问题 prepareStatement 能够防止sql注入问题stmt conn.prepareStatement(sql);// 需要给?设置值stmt.setString(1,username);stmt.setString(2,password);// 执行SQL语句rs stmt.executeQuery();// 遍历数据if(rs.next()){// 表示存在数据如果存在说明用户名和密码编写正确return 登录成功...;}else{return 登录失败了...;}} catch (SQLException e) {e.printStackTrace();}finally {JdbcUtils.close(conn,stmt,rs);}return null;}/*** 模拟登录的功能通过用户名和密码从数据库中查询* param username* param password* return*/public String login(String username,String password){Connection conn null;Statement stmt null;ResultSet rs null;try {// 获取到连接conn JdbcUtils.getConnection();// 编写SQL语句的拼接 11 true password 1234sdfsce false true and false 整体上false// String sql select * from t_user where username aaa or 11 and password 1234sdfsce;// String sql select * from t_user where username aaa or false;String sql select * from y_user where username username and password password;// 执行sqlstmt conn.createStatement();// 执行rs stmt.executeQuery(sql);// 遍历数据if(rs.next()){// 表示存在数据如果存在说明用户名和密码编写正确return 登录成功...;}else{return 登录失败了...;}} catch (SQLException e) {e.printStackTrace();}finally {JdbcUtils.close(conn,stmt,rs);}return null;}}
http://www.tj-hxxt.cn/news/135276.html

相关文章:

  • 招商网站建站装潢设计网
  • 重庆涪陵网站设计公司哪家专业花生棒 做网站
  • 网站宣传的好处html美食网页设计源码
  • 台州网站建设策划怎么做自助交易网站
  • 陕西专业网站开发联系电话陕西省建设网信息截图
  • 网站建设模板怎么做烟台市住房和城乡建设局网站
  • 国外设计网站大全开发公司抽奖送房
  • 国外商业网站设计建设企业管理类网站
  • 网站建设品牌江门建站模板搭建
  • 站长之家ip查询百度收录不到公司网站
  • 闸北区网站设计企业为什么要分析环境
  • 网站左侧分类导航菜单北京网站建设华网
  • asp建站程序做企业网站设计价格是多少钱
  • 外国风格网站建设价格陆金所 网站开发二部
  • 网站做电子链接标识申请好吗meetsh网站建设
  • 泉州自助建站wordpress调试工具
  • 360免费建站空间营业执照年审登录入口
  • 需要网站建设东莞个人网站推广建设
  • 手机网站建设技术广州做网站代理商
  • 余姚做百度网站建设成都网站建设比较好的公司
  • 忻州集团网站建设热门关键词排名查询
  • 网站模块在线制作教程前端设计除了做网站还能做什么
  • 湘西 网站 建设 公司制作网页小图片
  • 襄樊公司网站建设广告设计免费
  • 三合一网站选什么系统wordpress 分页不出来
  • 免费的黄冈网站有哪些平台可以用微信支付网络营销的特点举例
  • 建e网室内设计网现代简约seo工具有哪些
  • php自适应网站开发wordpress编辑角色无法上传图片
  • 网站开发 承接浙江网站建设正规公司
  • 山东省建设工程网站做一个网站多少费用