25.3. 数据库开发规范

简介:

25.3.1. 使用pdo_mysql替代mysql

禁止通过字符串链接拼接sql语句,极容易出现注入漏洞

错误的写法:

$sql = "select * from table where id='".$id."'"; 
$sql = "INSERT INTO fruit(name, colour) VALUES ('".$name."', '".$colour."')"; 
			

$sql = "select * from table where id=".$id; 这种写法如果id没有做检查可以100%注入成功

正确的写法

$sql = "select * from table where id=?"; 
$sql = "INSERT INTO fruit(name, colour) VALUES (?, ?)"; 	
			

使用“?”优势不便于我们排查调试有可能你传入的数字不对称,我们建议使用bindParam() 和 bindValue()

$sql = "select * from table where id = :id"; 
$sql = "INSERT INTO fruit(name, colour) VALUES (:name, :colour)"; 				
			

25.3.2. 查询规范

禁止使用 * 例如:

select * from member;
			

查询记录是否存在

select count(id) from member where username = :username
			

25.3.3. 结果集使用注意事项

错误的使用使方式

print($row[0]);
print($row[1]); 
			

这种方式,有可能当数据库结构改变,增加字段,字段顺序发生变化,输出数据都会出错


原文出处:Netkiller 系列 手札

本文作者:陈景峯

转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。


目录
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
【JavaEE进阶】 数据库连接池与MySQL企业开发规范
【JavaEE进阶】 数据库连接池与MySQL企业开发规范
|
存储 SQL 机器学习/深度学习
|
存储 SQL Java
Java电商系统数据库设计及开发规范(下)
Java电商系统数据库设计及开发规范(下)
140 0
Java电商系统数据库设计及开发规范(下)
|
Java 数据库
Java电商系统数据库设计及开发规范(上)
Java电商系统数据库设计及开发规范(上)
242 0
Java电商系统数据库设计及开发规范(上)
|
SQL 存储 自然语言处理
【学习资料】第6期PostgreSQL 数据库开发规范
大家好这里是PostgreSQL 数据库开发规范
|
SQL Oracle 关系型数据库
数据库设计及开发规范,sql性能优化
1 引言 1.1 编写目的 本文档用于规范数据库设计、开发等方面的内容。 1.2 预期读者 本文档的预期读者为本项目组全体成员,以及其他与项目有关的管理人员。
2980 0
|
存储 关系型数据库 MySQL
|
SQL 关系型数据库 数据库
PostgreSQL 数据库开发规范
## 背景 PostgreSQL的功能非常强大,但是要把PostgreSQL用好,开发人员是非常关键的。 下面将针对PostgreSQL数据库原理与特性,输出一份开发规范,希望可以减少大家在使用PostgreSQL数据库过程中遇到的困惑。 目标是将PostgreSQ
16531 3
|
关系型数据库 MySQL 数据库
【MySQL】数据库开发规范
根据工作经验 总结了一份MySQL 数据库开发规范,对于索引设计概况不完全,这点需要DBA针对开发做数据库优化设计的分享,欢迎各取所需。
3549 0
|
6天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)