Próbuję parametrize kwerendę, która obecnie pracuje i jest gotowy do ataku SQL injection:parametryzacji ORM kwerendy z którym w klauzuli
qryAwards = ORMExecuteQuery(
"from Award where awardID in (#form.deleteAwardList#) and Game.Season.User.userID=:uid",
{uid=session.userID}
);
if(not isNull(qryAwards) and arrayLen(qryAwards)){
for(i in qryAwards){
entityDelete(i);
}
}
Próbowałem to, o param bez apostrofami:
qryAwards = ORMExecuteQuery(
"from Award where awardID in (:awardList) and Game.Season.User.userID=:uid",
{awardList=form.deleteAwardList, uid=session.userID}
);
wciąż otrzymuję następujący błąd:
The value 117,118 cannot be converted to a number.
A to, z param ujęty w apostrofy:
qryAwards = ORMExecuteQuery(
"from Award where awardID in (':awardList') and Game.Season.User.userID=:uid",
{awardList=form.deleteAwardList, uid=session.userID}
);
Gets mi następujący błąd:
Invalid parameters specified for the query.
Dzięki, to działa! – TekiusFanatikus
Z bezczynnej ciekawości, czy to podejście omija apostrofy? –
Powinno. Za każdym razem, gdy parametryzujesz dane takie jak znaki specjalne, są one unikane, tak jak w 'cfparam'. Ponadto, nie można używać 'cfqueryparam' z' ORMExecuteQuery() '. Używając parametrów w taki sposób, w jaki jest, jest taki sam jak przy użyciu 'cfqueryparam' –