美文网首页
怎么防止SQL注入

怎么防止SQL注入

作者: 愤怒的灰机 | 来源:发表于2018-09-10 22:29 被阅读0次
  1. SQL注入举例
    定义sql语句(php):
    sql="select * from user where username='username' and password= '$password' ";
    然后提交如下URL:
    127.0.0.1/injection/user.php?username=angel' or '1=1
    或:127.0.0.1/injection/user.php?username=angel' /*
    127.0.0.1/injection/user.php?username=angel' #(这两种方式可以把后面的语句注释掉)
    就可以不需要密码便能查询或登陆,这便是sql注入的一种方式。

  2. 应对措施
    (1)PrepareStatement+Bind-Variable
    因为MySQL不存在共享池的概念,所以在MySQL上使用绑定变量(Bind-Variable)最大的好处是为了避免SQL注入,增加安全性,以Java为例:
    Connection con=getConnection();
    String sqlStmt="select * from user where username = ? and password = ?";
    PreparedStatement prepStmt =conn.prepareStatement(sqlStmt);
    prepStmt.setString(1,"angel ' or 1=1' ");
    prepStmt.setString(2,"test");
    System.out.println(prepStmt.toString());
    //输出:select * from user where username= 'angel' or 1=1' ' and password ='test';
    res=prepStmt.executeQuery();
    可以看到采用了绑定变量后输入的非法字符会被正常转义而不会作为SQL的条件被解析,避免了SQL注入的风险。
    注意:提供该功能的是JDBC驱动,而非MySQL。
    (2)自己定义函数来校验
    即可以通过对用户提交或可能改变的数据进行分类,然后用正则表达式来对用户提供的输入数据进行检测和验证,特别是空格符号和与其产生相同作用的分割关键字的符号,如“/**/”,同时也要过滤他们的16进制表示"%XX"。
    (3)使用应用程序提供的转换函数
    如MySQL C API的:mysql_real_escape_string();
    MySQL++的: escape和quote修饰符。

相关文章

  • idea搭建 mybatis框架

    {}方式能够很大程度防止sql注入,${}方式无法防止Sql注入。 SELECT deptno,dname,loc...

  • 怎么防止SQL注入

    SQL注入举例定义sql语句(php):username' and password= '$password' "...

  • php面试题

    防止SQL注入简单回答:防止——利用即有的应用、功能,将(恶意)SQL命令发送到到后台数据库引擎。 防止SQL注入...

  • sql注入风险

    SQL注入攻防入门详解 如何从根本上防止 SQL 注入 教您使用参数化SQL语句 参数化查询为什么能够防止SQL注...

  • Mybatis如何防止SQL注入

    Mybatis如何防止SQL注入 什么是SQL注入 sql注入是一种代码注入技术,将恶意的sql插入到被执行的字段...

  • 谈谈sql注入之防范(四)

    了解了SQL注入的方法后,如何能防止SQL注入?如何进一步防范SQL注入的泛滥?怎么通过一些合理的操作和配置来降低...

  • JDBC进阶 & BeanUtils组件简介

    预编译sql处理(防止sql注入) Statement : 执行SQL命令CallableStatement : ...

  • php面试题

    防止SQL注入 简单回答:防止——利用即有的应用、功能,将(恶意)SQL命令发送到到后台数据库引擎。 防止SQL注...

  • 防止sql注入

    1、php.ini配置中magic_quotes_gpc 将用户输入的单引号' 会自动转义成 ' 2、addsla...

  • 防止SQL注入

    防止SQL注入的方式: 1.开启配置文件中的magic_quotes_gpc和magic_quotes_runti...

网友评论

      本文标题:怎么防止SQL注入

      本文链接:https://www.haomeiwen.com/subject/ltbegftx.html