以下是一个简单的PHP防止SQL注入的函数,它使用正则表达式来检测和过滤SQL注入语法:
function preventSqlInjection($input) {
// 过滤掉单引号、双引号、反斜杠和空字符
$filteredInput = preg_replace("/['\"\\\\]/", "", $input);
// 检测是否存在SQL注入语法
if (preg_match("/(;|--|\\\\)/", $filteredInput)) {
// 存在注入语法,返回空字符串或其他错误处理
return "";
}
// 没有注入语法,返回过滤后的输入值
return $filteredInput;
}
使用示例:
$username = $_POST['username'];
$password = $_POST['password'];
$filteredUsername = preventSqlInjection($username);
$filteredPassword = preventSqlInjection($password);
if ($filteredUsername !== "" && $filteredPassword !== "") {
// 执行数据库查询等操作
// 使用$filteredUsername和$filteredPassword进行查询等操作
} else {
// 处理错误情况,可能是SQL注入攻击
}
这个函数使用preg_replace
函数来过滤掉输入中的单引号、双引号、反斜杠和空字符。然后使用preg_match
函数来检测是否存在SQL注入语法,例如分号、双破折号和反斜杠。如果存在注入语法,函数返回空字符串或其他错误处理。如果没有注入语法,函数返回过滤后的输入值,可以安全地用于数据库查询等操作。
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站