Ecto använder endast förberedda uttalanden. När du använder ecto-frågesyntax är det inte möjligt att införa SQL-injektion. Frågesyntaxen verifierar vid kompilering att ingen SQL-injektion är möjlig.
Att visa exakt de körda frågorna kan vara svårt på grund av två anledningar:
- Postgrex (och därmed Ecto) använder det binära protokollet postgresql (istället för det vanligaste, men mindre effektiva, textprotokollet), så
PREPARE
fråga existerar aldrig som en sträng. - I de flesta fall är allt du ser en initial
PREPARE 64237612638712636123(...) AS ...
och senare en massaEXECUTE 64237612638712636123(...)
vilket inte är så användbart. Att försöka relatera en till en annan skulle vara hemskt.
Enligt min erfarenhet använder de flesta program av det slaget prepare-satser och loggar dem istället för råfrågor, eftersom det är mycket mer användbart för att förstå systemets beteende.