SQL 注入
来源:互联网 发布:跟淘宝联盟类似的网站 编辑:程序博客网 时间:2024/06/06 18:40
- 问题描述
- 问题解决
- MySQL 中的
问题描述
在使用 PreparedStatement 之后可以解决 SQL 注入的问题, 但是其实如果字符串是 \' OR 1 = 1 OR \'
和 ' OR 1 = 1 OR '
, setString 之后的结果还是相同的, 那么这是真正的解决吗? MySQL 中的「\」也是转义的意思吗?
问题解决
MySQL 中的「\」
Java 测试代码
@Testpublic void testLoginPreparedStat() throws Exception { //原本的用户名和密码 String username = "DJ"; String password = "admin"; //如果使用SQL注入 username = "' OR 1 = 1 OR '"; password = "1"; //创建连接进行查询 Connection connection = JdbcUtil.getConnection(); String sql = "SELECT * FROM t_login_day06 WHERE username = ? AND password ?"; PreparedStatement pst = connection.prepareStatement(sql); pst.setString(1, username); pst.setString(2, password); System.out.println(pst); ResultSet resultSet = pst.executeQuery(); if (resultSet.next()) { System.out.println("恭喜登陆成功"); } else { System.out.println("登陆失败"); }}
数据库内容
+----+-----------------+----------+| id | username | password |+----+-----------------+----------+| 1 | DJ | admin || 2 | ' OR 1 = 1 OR ' | 1 |+----+-----------------+----------+
代码执行输出
com.mysql.jdbc.JDBC4PreparedStatement@63d4e2ba: SELECT * FROM t_login_day06 WHERE username = '\' OR 1 = 1 OR \'' AND password = '1'恭喜登陆成功
根据输出结果可以得知「\」应该是转义的意思, 因为 SQL 语句中的 \' OR 1 = 1 OR \'
等价于数据库中的 ' OR 1 = 1 OR '
0 0
- SQL注入--GET注入
- 注入攻击--SQL注入
- 【sql注入】mysql注入
- SQL注入
- SQL注入
- SQL注入
- sql注入
- SQL注入
- SQL注入
- SQL注入
- SQL注入
- sql注入
- SQL注入
- SQL注入
- SQL注入
- SQL注入
- SQL注入
- sql注入
- servlet中将接收的参数转成Json
- Tree-----宽度优先遍历2(103. Binary Tree Zigzag Level Order Traversal)
- 二叉树创建
- python发送邮件实现
- 运营策略
- SQL 注入
- HDU-5973 Game of Taking Stones(大数+二分求精度)
- JDBC4.0 可以自动加载注册驱动
- 用elasticsearch和kibana 进行简单的实时数据报表分析
- PreparedStatement 预编译
- 时间规划
- 财务与股权
- JDBC 资源关闭
- eclipse中is missing required source folder问题的解决