SQL 语句的正确姿势

简介: SQL 语句的正确姿势
// 不安全的写法举例 1
 $_GET ['id']=8;// 希望得到的是正整数
 $data=M('Member')->where('id='.$_GET['id'])->find();
 $_GET ['id']='8 or status=1';// 隐患:构造畸形查询条件进行注入;
 // 安全的替换写法
 $data=M ('Member')->where (array ('id'=>$_GET ['id']))->find ();// 使用数组方式将自动使用框架自带的字段类型检测防止注入
 $data=M ('Member')->where (array ('id'=>(int)$_GET ['id']))->find ();// 类型约束
 $data=M ('Member')->where ('id='.intval ($_GET ['id']))->find ();// 类型转换
 $data=M ('Member')->where (array ('id'=>I ('get.id','','intval')))->find ();// 本人习惯写法
 $data=M ('Member')->where (array ('id'=>':id'))->bind (':id',I ('get.id'))->select ();//PDO 驱动可以使用参数绑定
 $data=M ('Member')->where ("id=% d",array ($_GET ['id']))->find ();// 预处理机制
 // 不安全的写法举例 2
 $_GET ['id']=8;// 希望得到的是正整数
 $data=M ()->query ('SELECT * FROM `member` WHERE  id='.$_GET ['id']);// 执行的 SQL 语句
 $_GET ['id']='8  UNION SELECT * FROM `member`';;// 隐患:构造畸形语句进行注入;
相关文章
|
SQL XML Oracle
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
548 0
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
|
6月前
|
SQL Oracle 关系型数据库
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
82 0
|
SQL 存储 缓存
一文搞懂MySQL中一条SQL语句是如何执行的
一文搞懂MySQL中一条SQL语句是如何执行的
|
SQL 存储 关系型数据库
MySQL的第一篇文章——了解数据库、简单的SQL语句
MySQL的第一篇文章——了解数据库、简单的SQL语句
|
SQL Python
Pandas与SQL的数据操作语句对照
Pandas与SQL的数据操作语句对照
170 0
Pandas与SQL的数据操作语句对照
|
SQL 数据库 Python
Python 数据库Insert语句脚本生成工具(SQL Server)
Python 数据库Insert语句脚本生成工具(SQL Server)
390 0
Python 数据库Insert语句脚本生成工具(SQL Server)
|
SQL 程序员 开发工具
【Sql Server】基础之分组查询重复出现多条记录的SQL语句,以及group by和having、min函数运用
基础之分组查询重复出现多条记录的SQL语句,以及group by和having、min函数运用
549 0
【Sql Server】基础之分组查询重复出现多条记录的SQL语句,以及group by和having、min函数运用
SQL 查询表中每门课程成绩最好的前n名学生 优于group by语句的方法
SQL 查询表中每门课程成绩最好的前n名学生 优于group by语句的方法
SQL 查询表中每门课程成绩最好的前n名学生 优于group by语句的方法
|
SQL 数据库 数据安全/隐私保护
使用SQL语句 查询电话号码 加密显示
使用SQL语句 查询电话号码 加密显示
341 0
使用SQL语句 查询电话号码 加密显示
|
SQL 存储 安全
MYSQL数据库初窥门径, SQL语句地熟练使用, 图形化界面提高效率
MYSQL数据库初窥门径, SQL语句地熟练使用, 图形化界面提高效率
MYSQL数据库初窥门径, SQL语句地熟练使用, 图形化界面提高效率