用户可以利用向php表单输入的数据完成对mysql的注入攻击。
例如我的查询是 insert table into xx values('用户名','号码','文件',0).在用户输入时最后一位只能是0.(用户不需要输入)。这时用户在号码处输入
10000','xxxx.gif.,1) --
-- 双连字符后加一个空格是sql的注释语句,表单上传到数据库的查询条件变成了insert table into xx values('用户名',10000','xxxx.gif.,1) --‘文件’
所以最后一列本该为0被强制置为1.称为sql注入攻击。
解决方法是:
1.使用内置php函数trim()去除前导或末尾空格。$name = trim($_POST['name']);
2.使用内置函数mysqli_real_escape_string()将可能有危险的字符转义。$name = mysqli_real_escape_string(trim($_POST['name']));
3.省略掉最后一列的输入,改为使用初始值default。使用mysql语句:ALTER TABLE table_name MODIFY COLUMN approved TINYINT DEFAULT 0
默认为0,php中不再向sql输入数据。