PHP 如何避免 SQL 注入?

请尝试在评论区里写下答案(如不能清楚表述,那么你可能没真正理解)。欢迎参与,为下一次求职做准备。

如题。

摈弃世俗浮躁,追求技术精湛
Summer
讨论数量: 10

只用过字符串转义一种方法

2年前 评论

数据类型简单点只有2种(拼接到sql 语句中后)

一种是数字,包含小数,另一种就是字符串,包含日期

这样就简单了, 数字的强制判断转换就行,字符串转义单双引号就好了

2年前 评论

使用 Mysql预处理语句就好了。

2年前 评论
<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// 插入一行
$name = 'one';
$value = 1;
$stmt->execute();

//  用不同的值插入另一行
$name = 'two';
$value = 2;
$stmt->execute();

摘自 php.net

2年前 评论

上菜 mysql_real_escape_string()

2年前 评论

从服务端:关闭 php.ini 中display_errors为off

从代码角度: 1.使用预编译。 2.使用过滤函数 addslasshes。 3.检测参数类型、格式, 例如整型,字符型, 时间、日期等

2年前 评论

过滤前端提交的参数值

在sql查询时使用参数绑定

2年前 评论
  1. 明确入参类型与格式
  2. 类型转换与参数过滤
  3. SQL参数绑定(prepare) PS : 此条为核心项
2年前 评论

用PDO驱动,使用Mysql的预处理(prepared)

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!