Skip to content
This repository was archived by the owner on Apr 3, 2023. It is now read-only.

Commit 312c5f7

Browse files
author
Teddy Roncin
committed
🔒 (SQL injection) Fixed 2 SQL injection flaws in Filters
SearchInNamesFilter and UEFilter both contained a SQL injection flaw. It has been fixed
1 parent 1ac0bca commit 312c5f7

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

src/ApiPlatform/SearchInNamesFilter.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,11 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
2727
}
2828
$alias = $queryBuilder->getRootAliases()[0];
2929
$infoAlias = $queryNameGenerator->generateJoinAlias('info');
30+
$valueParameter = $queryNameGenerator->generateParameterName('value');
3031
$queryBuilder
3132
->innerJoin("{$alias}.infos", $infoAlias)
32-
->andWhere("({$alias}.firstName LIKE '%{$value}%' OR {$alias}.lastName LIKE '%{$value}%' OR {$infoAlias}.nickname LIKE '%{$value}%')")
33+
->andWhere("({$alias}.firstName LIKE :{$valueParameter} OR {$alias}.lastName LIKE :{$valueParameter} OR {$infoAlias}.nickname LIKE :{$valueParameter})")
34+
->setParameter($valueParameter, "%{$value}%")
3335
;
3436
}
3537
}

src/ApiPlatform/UEFilter.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,21 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB
2727
return;
2828
}
2929
$alias = $queryBuilder->getRootAliases()[0];
30+
$nowParameter = $queryNameGenerator->generateParameterName('now');
3031
foreach ($value as $ueCode) {
3132
$ueAlias = $queryNameGenerator->generateJoinAlias('UE');
3233
$ueSubscriptionAlias = $queryNameGenerator->generateJoinAlias('UEsSubscriptions');
3334
$semesterAlias = $queryNameGenerator->generateJoinAlias('Semester');
35+
$ueParameter = $queryNameGenerator->generateParameterName('ue');
3436
$queryBuilder->innerJoin("{$alias}.UEsSubscriptions", $ueSubscriptionAlias)
3537
->innerJoin("{$ueSubscriptionAlias}.UE", $ueAlias)
3638
->innerJoin("{$ueSubscriptionAlias}.semester", $semesterAlias)
37-
->andWhere("{$ueAlias}.code = '{$ueCode}'")
38-
->andWhere("{$semesterAlias}.start <= :now")
39-
->andWhere("{$semesterAlias}.end >= :now")
39+
->andWhere("{$ueAlias}.code = :{$ueParameter}")
40+
->andWhere("{$semesterAlias}.start <= :{$nowParameter}")
41+
->andWhere("{$semesterAlias}.end >= :{$nowParameter}")
42+
->setParameter($ueParameter, $ueCode)
4043
;
4144
}
42-
$queryBuilder->setParameter('now', new \DateTime());
45+
$queryBuilder->setParameter($nowParameter, new \DateTime());
4346
}
4447
}

0 commit comments

Comments
 (0)