Veracode-Bericht zeigt eine SQL-Injektionsfehler für die folgende Abfrage. Es gibt einige Parameter, die ich benötige, um die Eigenschaftendatei zu erhalten und dann in meinen sql zu injizieren, d. H. Schemaname, Sortierreihenfolge .. etc.SQL Injection-Schwachstelle mit Order by-Klausel in JAVA
Ich habe versucht,% s mit String.format zu verwenden, aber veraCode zeigt es immer noch als Fehler an. Für den Parameter ist es in Ordnung, da ich map verwendet habe, aber für Schema und Sortierreihenfolge zeigt es immer noch einen Fehler.
Jeder Ansatz zur Lösung dieser Sicherheitsanfälligkeit?
phoneLogsQuery = "(select * from %s.SHORETEL_EVENTS_CALL_LOGS where CONVERT(date, CallDateTime,112) > CONVERT(date, GETDATE()-%s,112) "
+ " and (CALLER_CONTACT_ID in (:contactId) or CALLED_CONTACT_ID in (:contactId)) and EXTERNAL_CALL = 1 "
+ "UNION "
+ "select * from %s.SHORETEL_EVENTS_CALL_LOGS where CONVERT(date, CallDateTime,112) > CONVERT(date, GETDATE()-%s,112) "
+ " and (CALLER_CONTACT_ID in (:contactId) or CALLED_CONTACT_ID in (:contactId))"
+ " and GUILOGIN_NAME = :guiloginName and EXTERNAL_CALL = 0)"
+ " order by CallDateTime %s %s ";
phoneLogsQuery = String.format(phoneLogsQuery, schemaname, phoneLogAllData, schemaname, phoneLogAllData, sortDir, offsetQuery);
shoretelPhoneLogRow = jdbcTemplate.query(phoneLogsQuery,params,
new ShoretelPhoneLogMapper());