一.防御
过滤
1.使用过滤函数
email = filter_var(_POST['email'], FILTER_VALIDATE_EMAIL);
if ($email) { // input is a valid email address }
else { // input is not a valid email address
使用 filter_var()
函数和 FILTER_VALIDATE_EMAIL
过滤器来验证用户输入是否为有效的电子邮件地址,从而减少了发生 SQL 注入攻击的概率
2.过滤和转义用户输入
username = mysqli_real_escape_string(connection, $_POST['username']);
password = mysqli_real_escape_string(connection, $_POST['password']);
$query = "SELECT * FROM users WHERE username='" . $username . "' AND password='" . $password . "'"; result = mysqli_query(connection, $query);
使用 mysqli_real_escape_string()
函数对用户输入进行了转义。将转义后的值插入 SQL 查询字符串中,可以有效地防止 SQL 注入攻击。
布置waf 和安全设备
避免拼接方式工造sql语句
文件读写的条件
1.root权限
2.绝对路径
3.项secure_file_priv
案例
读取文件 load_file()函数
and 1=2 union select 1,load file("c:\\windows\\system32\\drivers\\etc\\hosts"),3
写入 into outfile
and 1=2 union select 1,"",3 into outfile "/var/www/html/1.php" 一句话木马