Sto dando un'occhiata a un codice sorgente webapp e, sebbene lo sviluppatore sia stato abbastanza attento da utilizzare le istruzioni preparate per compilare i parametri "String" della query, ha inserito tutti i parametri "Long" della query usando una semplice concatenazione.
Example:
Obs: lo stato ha tipo Stringa , var1 ha tipo Lungo
Query query = entityManager.createQuery(
"SELECT UPPER(request.attributeValue) FROM PreOrderedRequests request
WHERE request.status = :status AND request.report.id = " + var1);
So che non avrebbe dovuto farlo, ma la mia domanda è: qualcuno ha visto qui un vero exploit per questo? Come si potrebbe approfittare di questo comportamento?
Per i sospetti: non sto hacking nulla. Solo un mio amico che mi ha chiesto di dare un'occhiata a questo specifico pezzo di codice.