Ecto używa tylko przygotowanych zestawień. W przypadku korzystania ze składni zapytania ecto wprowadzenie wstrzykiwania SQL nie jest możliwe. Składnia zapytania sprawdza w czasie kompilacji, że wstrzyknięcie SQL nie jest możliwe.
Pokazanie dokładnie wykonanych zapytań może być trudne z kilku powodów:
- Postgrex (a tym samym Ecto) używa binarnego protokołu postgresql (zamiast najpopularniejszego, ale mniej wydajnego protokołu tekstowego), więc
PREPARE
zapytanie nigdy nie istnieje jako ciąg znaków. - W większości przypadków wszystko, co zobaczysz, to jeden początkowy
PREPARE 64237612638712636123(...) AS ...
a później dużoEXECUTE 64237612638712636123(...)
co nie jest tak pomocne. Próba odnoszenia się do siebie byłaby okropna.
Z mojego doświadczenia wynika, że większość tego typu oprogramowania używa instrukcji przygotowania i loguje je zamiast surowych zapytań, ponieważ jest to o wiele bardziej pomocne w zrozumieniu zachowania systemu.