精华内容
下载资源
问答
  • 防止sql注入

    万次阅读 2018-08-14 11:14:29
    利用sql注入可以完美的登录后台进行管理,做一些非法操作。...但是也得了解过滤的原理,以下为本人总结的防止sql注入的方法 1.前端正则过滤掉特殊字符。 2.后端再过滤一遍,正则、intval函数啥的都行(防止利用...

    在登录的时候,前台一般是注册后再登录,而后台管理员不一样,管理员不是注册的,而是超管添加的。利用sql注入可以完美的登录后台进行管理,做一些非法操作。为了防止这类人,必要的情况下做一些防范措施

    php各大框架一般在底层都把过滤机制写好了。

    但是也得了解过滤的原理,以下为本人总结的防止sql注入的方法

    1.前端正则过滤掉特殊字符。

    2.后端再过滤一遍,正则、intval函数啥的都行(防止利用别的工具进行传参)可以封装一个公共类

    3.使用php扩展pdo操作数据库

    4.如果同一个ip频繁请求接口,封锁ip一段时间

    5.限制数据库权限,确保数据库安全

    6.避免eval函数的使用

     

    展开全文
  • 防止SQL注入

    2020-11-23 20:19:37
    防止SQL注入 什么是SQL注入? 接着通过JDBC完成数据的增删改查,如果要删除数据,即删除对应id的学生信息。正常情况下,我们输入学生的id删除即可。 执行代码,如果输入诸如以下形式,则有可能删除了数据库中所有...

    防止SQL注入

    什么是SQL注入?

    接着通过JDBC完成数据的增删改查,如果要删除数据,即删除对应id的学生信息。正常情况下,我们输入学生的id删除即可。

    执行代码,如果输入诸如以下形式,则有可能删除了数据库中所有的数据,非常危险。这个过程称作:SQL注入。

    a' or '1'='1

    通过JDBC完成删除操作,无防SQL注入

    package com.jd.test;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Scanner;
    
    public class Test4 {//SQL注入
    
    	public static void main(String[] args) {
    		Connection connection = null;
    		Statement statement = null;
    		Scanner scanner = new Scanner(System.in);
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			String url = "jdbc:mysql://127.0.0.1:3306/test";//加载驱动
    			connection = DriverManager.getConnection(url, "root", "root");//创建连接
    			String id = scanner.nextLine();
    			String sql = "delete from student where id = '"+id+"'";
    			statement = connection.createStatement();//创建语句
    			int effect = statement.executeUpdate(sql);
    			if(effect>0) {//处理结果
    				System.out.println("OK!");
    				return;
    			}
    			System.out.println("NO!");
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {//处理结果
    			try {
    				if (statement!=null) {
    					statement.close();
    				}
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    			try {
    				if (connection!=null) {
    					connection.close();
    				}
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }
    

    执行结果为:

    此时,student数据库中所有的数据都被删除了。

    怎么防范SQL注入?

    问题主要出现在以上这行代码,由于它不加过滤的接收输入id,致使sql命令被人刻意改变,进而产生危险。

    String sql = "delete from student where id = '"+id+"'";

    现将其做以下修改:

    package com.jd.test;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Scanner;
    
    public class Test3 {//SQL注入
    
    	public static void main(String[] args) {
    		Connection connection = null;
    		PreparedStatement preparestatement = null;
    		ResultSet resultSet = null;
    		Scanner scanner = new Scanner(System.in);
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			String url = "jdbc:mysql://127.0.0.1:3306/test";//加载驱动
    			connection = DriverManager.getConnection(url, "root", "root");//创建连接
    			String sql = "delete from student where id = ?";
    			preparestatement = connection.prepareStatement(sql);//创建语句
    			String id = scanner.nextLine();
    			preparestatement.setObject(1, id);
    			if(preparestatement.executeUpdate()>0) {
    				System.out.println("OK!");
    				return;
    			}
    			System.out.println("NO!");
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {//处理结果
    			try {
    				if (preparestatement!=null) {
    					preparestatement.close();
    				}
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    			try {
    				if (connection!=null) {
    					connection.close();
    				}
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }
    

    通过将语句块对象修改为PreparedStatement类,将原先应输入的地方改为?符代替。 再通过setObject完成赋值,就可防止SQL注入。

    运行后,结果如下,数据未被删除,保证了安全。

     

    展开全文
  • jsp 防止sql注入jsp 防止sql注入jsp 防止sql注入jsp 防止sql注入

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,728
精华内容 3,091
关键字:

防止sql注入