15.SQL中的安全问题
15.1 SQL注入简介
SQL是用来和数据库交互的文本语言。
SQL注入(SQL Injection)是利用数据库的外部接口将用户数据插入到实际的SQL中,以达到入侵数据库乃至操作系统的目的。
产生的原因主要由于程序没有对用户输入数据进行严格的过滤,导致非法SQL语句的执行。
SQL注入可能的危害包括:读取、修改、删除数据,获取用户名、密码等信息,获取管理员权限等。
SQL注入很难防范,不能通过操作系统补丁、数据库升级、防火墙进行拦截。
例子:
select * from user where username='$username' and password='$password'
传入参数$username未进行校验时,传入username ' or '1=1,将导致sql被改写为:
select * from user where username='username' or 1=1 and password='password'
将导致用户名和密码全部失效。
或者 传入注释符 username '/*或username '#,将导致sql被改写为:
select * from user where username='username'/*
select * from user where username='username'#
导致密码失效。

15.2 应用开发中可以采取的应对措施
15.2.1 PrepareStatement+Bind-Variable(预编译+绑定变量)
在Mysql上使用绑定变量可有效避免SQL注入。
Java中preparedStatement可有效对单引号进行转义,从而导致非法输入的变量拼接成SQL后,导致SQL报错,防止SQL注入。
15.2.2 使用应用程序提供的转换函数
使用对特殊字符转换的函数来过滤特殊字符,如mysql_real_escape_string()。
15.2.3 自己定义函数进行校验
自行编写输入校验函数,使用正则表达式校验非法输入。
已知非法字符包括:' ; = ( ) /* */ % + "" > < -- [ ]
15.3 小结
MyBatis中要注意$符。

15.Mysql中的安全问题的更多相关文章

  1. 15 SQL中的安全问题

    SQL中的安全问题     1.SQL注入         demo1:             SELECT * FROM user WHERE username = ? AND password ...

  2. MySQL中锁详解(行锁、表锁、页锁、悲观锁、乐观锁等)

    原文地址:http://blog.csdn.net/mysteryhaohao/article/details/51669741 锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具.在计算机中,是 ...

  3. 【转】MySql中的函数

    原文:http://www.cnblogs.com/kissdodog/p/4168721.html MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: ...

  4. MySQL中的两种临时表

    MySQL中的两种临时表 伯乐在线2016-07-06 05:16:52阅读(4556)评论(3) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 ...

  5. 【转】MySQL中varchar最大长度是多少?

    一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无 ...

  6. MySQL中存储过程+事件的使用方法

    一.背景 将界面操作日志存储在MySQL数据库中的operationlog表中,如果该表不能自动备份,表中的数据会越来越多,影响速度.可以定期将表中数据备份到另外一个表中来解决. 二.解决方案 1.使 ...

  7. php实现只保留mysql中最新1000条记录

    这篇文章主要介绍了php实现只保留mysql中最新1000条记录的方法和相关示例及数据库结构,十分的全面,有需要的小伙伴可以参考下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...

  8. mysql中数据类型的取值范围

    mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介绍,如下: 1.bigint 从 -2^63 (-9223372036854775808) 到 2^ ...

  9. MYSQL中关于日期处理的函数

    < DOCTYPE HTML PUBLIC -WCDTD HTML TransitionalEN> MySQL数据库中SQL语句中 关于日期.时间\时间戳的函数   一 MySQL 获得当 ...

随机推荐

  1. mysql explain预估剖析

    http://www.cnblogs.com/LBSer/p/3333881.html 引子: 使用MySQL建立了一张表country,总共有才3121行记录. 但是使用explain select ...

  2. 求1到n,n个整数的全排列

    package com.dong.harder; public class AllArrays { public static void main(String[] args) { // TODO A ...

  3. 2.5、CDH 搭建Hadoop在安装(设置Cloudera Manager数据库)

    步骤5:设置Cloudera Manager数据库 Cloudera Manager Server包含一个可以为自己创建和配置数据库的脚本.该脚本可以: 创建Cloudera Manager Serv ...

  4. 2、CDH 搭建Hadoop在安装(安装Cloudera Manager,CDH和托管服务)

    安装Cloudera Manager,CDH和托管服务 建议使用此过程为生产环境安装Cloudera Manager和CDH.对于非生产“易于安装”,请参阅安装概念证明群集. 在开始安装之前,请确保已 ...

  5. harbor在centos7.4下面配置自签名证书(域名是端口映射)

    1.harbor安装,按常规安装. 注意事项,端口映射 端口要外网的与内网一至. 配置文件修改 vim docker-compose.yml proxy: image: vmware/nginx-ph ...

  6. eCharts 折线图,动态绑定数据不更新图表的问题,

    官方文档 : http://echarts.baidu.com/tutorial.html npm install echarts --save let lineChart = echarts.ini ...

  7. vue element upload上传、清除等

    如果项目中可以使用file-list,那我们可以点击file-list删除文件列表: 有时候项目中是不要这个文件列表的,所以在上传成功以后,文件列表一直存在,要重新上传就必须刷新页面,所以我们需要手动 ...

  8. DHCP server 冒充及DOS攻击处理方案

    一.DHCP服务器在运维上存在的常见问题: 1. DHCP服务器冒充 在DHCP服务器和客户端之间没有认证机制,如果在DHCP server覆盖的网络上随意接入一个DHCP server,就有可能造成 ...

  9. 6. ZigZag Conversion (字符串的连接)

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  10. Codeforces Beta Round #54 (Div. 2)

    Codeforces Beta Round #54 (Div. 2) http://codeforces.com/contest/58 A 找子序列 #include<bits/stdc++.h ...