MyBatis 防止sql注入攻击

Sql注入攻击

SQL注入攻击属于[数据库安全]攻击手段之一,可以通过[数据库安全]防护技术实现有效防护,数据库安全防护技术包括:数据库漏扫、[数据库加密]、[数据库防火墙]、[数据脱敏]、[数据库安全审计系统]等。
在写Java代码时,当采用MyBatis执行sql语句时,存在模糊查询的方法。存在表达式${} 和 #{}。当使用美元符号容易存在sql攻击方式。

防护一:sql语句不在使用${}表达式,改为#{}

Mysql: 使用like % 查询 LIKE CONCAT('%',#{name},'%' )
Oracle:使用like % 查询 LIKE '%'||#{name}||'%' 或者CONCAT函数

  <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> 
        #{item}
  </foreach>

防护二:采用阿里的druid数据连接池

 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->
        <property name="driverClassName" value="${jdbc.driver}" />
        
        <!-- 基本属性 url、user、password -->
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="${jdbc.initialSize}" />
        <property name="minIdle" value="${jdbc.minIdle}" />
        <property name="maxActive" value="${jdbc.maxActive}" />

        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="${jdbc.maxWait}" />

        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" />

        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" />

        <property name="validationQuery" value="${jdbc.testSql}" />
        <property name="testWhileIdle" value="true" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />

        <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
        <property name="poolPreparedStatements" value="true" />
        <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />

        <!-- 配置监控统计拦截的filters,和防sql注入 -->
        <property name="filters" value="stat,wall" />
    </bean>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 随着当今世界网络技术与信息技术高速发展,Web应用程序具有界面统一,使用简单,易于维护,扩展性好,共享度高等优先。...
    高美丽阅读 4,033评论 0 4
  • 姓名:于川皓 学号:16140210089 转载自:https://baike.baidu.com/item/sq...
    道无涯_cc76阅读 1,972评论 0 2
  • [SQL注入攻击] SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式...
    James黄杰阅读 2,692评论 0 30
  • Web安全之SQL注入漏洞 本节知识点 SQL注入原理 前言 结构化查询语句(Structured Query L...
    f354f7231c35阅读 2,077评论 0 5
  • 《一句顶一万句》应该是刘震云最牛的小说了,听说冯小刚想拍这个,他没给,给自己女儿了。可惜他女儿没有拍出书里要表达的...
    撒啦嗨吆阅读 391评论 0 0