Ecto utilizza solo dichiarazioni preparate. Quando si utilizza la sintassi delle query ecto, non è possibile introdurre SQL injection. La sintassi della query verifica in fase di compilazione che non sia possibile eseguire SQL injection.
Mostrare esattamente le query eseguite potrebbe essere difficile per due motivi:
- Postgrex (e quindi Ecto) utilizza il protocollo binario postgresql (invece del protocollo di testo più comune, ma meno efficiente), quindi
PREPARE
query non esiste mai effettivamente come una stringa. - Nella maggior parte dei casi, tutto ciò che vedresti sarebbe un
PREPARE 64237612638712636123(...) AS ...
e poi un sacco diEXECUTE 64237612638712636123(...)
che non è così utile. Cercare di relazionarsi l'uno con l'altro sarebbe orribile.
In base alla mia esperienza, la maggior parte dei software di quel tipo, utilizza le istruzioni prepare e le registra invece delle query non elaborate, poiché è molto più utile per comprendere il comportamento del sistema.