poetbi / boaphp

boaPHP是一款免费开源、灵活易用的配置式PHP框架,MVC设计模式,完全面向对象,易学易用、便于快速开发
Apache License 2.0
57 stars 3 forks source link

请问boa::db()->execute($sql)这个写法sql语句可以注入吗? #11

Open ziqiming opened 4 months ago

ziqiming commented 4 months ago

我有一组要批量插入mysql的数据

$userAgent = $_SERVER['HTTP_USER_AGENT'];

不知道boa::db()这个能不能在遍历里面使用,如果数据过多,可能单次有100条,会不会卡死

所以我采用了MYSQL的批量写法:

$sql = "insert into browser (name,sex,userAgent) values ('张三','男','{$userAgent}'),('李四','女','{$userAgent}'),('王五','男','{$userAgent}')";

boa::db()->execute($sql);

现在的问题是 1、不知道 PHP获取的这个 $userAgent 这个是否安全,网上查的说是可以伪造; 2、execute 这个方法有没有字符安全处理; 3、框架中是否有批量插入的办法;

poetbi commented 4 months ago
  1. userAgent一直可以伪造,不仅仅是PHP
  2. SQL使用占位符(?)时,系统替换时会自动处理,具体参见手册 数据库章节
  3. 在网页中批量插入100条记录没问题的(我在命令行下批量操作几十万条记录都没问题),框架中“预处理查询”在批量操作上性能会更好点