【文件属性】:
文件名称:在使用数组方式的普通查询条件后-图像目标检测技术及应用
文件大小:2.49MB
文件格式:PDF
更新时间:2021-06-04 00:04:34
ThinkPHP3.1
ThinkPHP3.1 完全开发手册
319
由于用户表的 score 设计的是数字类型,所以实际写入数据库之前,score 属性的值已经被强制进行 intval
转换了,模型的 save 方法也会同样进行字段类型检查。虽然在很多情况下,数据库本身也会进行数据转换,
但是对于某些数据库要求严格检查数据类型的情况会有帮助。
二、在使用数组方式的普通查询条件后
例如:
1. $User = M("User"); // 实例化 User对象
2. $condition['id'] = '1 OR 1=1';
3. // 把查询条件传入查询方法
4. $User->where($condition)->select();
对于这样的一个查询条件,在进行数据库查询之前,会对查询的数组条件进行字段类型检查,直接就把 id
的值强制转换为 1 然后再进行查询操作。
即使不进行强制转换,系统也会进行安全过滤,把这样的非法数据进行转义,区别在于这样对于数据库更
加安全,对于某些数据库要求严格检查数据类型的情况会有帮助。
14.3 防止 SQL 注入
对于 WEB 应用来说,SQL 注入攻击无疑是首要防范的安全问题,系统底层对于数据安全方面本身进行了很
多的处理和相应的防范机制,例如:
1. $User = M("User"); // 实例化 User对象
2. $User->find($_GET["id"]);
即便用户输入了一些恶意的 id 参数,系统也会强制转换成整型,避免恶意注入。这是因为,系统会对数据
进行强制的数据类型检测,并且对数据来源进行数据格式转换。而且,对于字符串类型的数据,ThinkPHP
都会进行 escape_string 处理。