Ecto používá pouze připravené výpisy. Při použití syntaxe dotazu ecto není zavedení SQL injection možné. Syntaxe dotazu v době kompilace ověřuje, že není možné vložení SQL.
Zobrazení přesně provedených dotazů může být obtížné z několika důvodů:
- Postgrex (a potažmo Ecto) používá binární protokol postgresql (místo nejběžnějšího, ale méně efektivního textového protokolu), takže
PREPARE
dotaz nikdy ve skutečnosti neexistuje jako řetězec. - Ve většině případů by vše, co byste viděli, byla jedna iniciála
PREPARE 64237612638712636123(...) AS ...
a později spoustuEXECUTE 64237612638712636123(...)
což není tak užitečné. Pokoušet se spojit jeden s druhým by bylo hrozné.
Z mé zkušenosti vyplývá, že většina softwaru tohoto druhu používá příkazy Prepare a log je místo nezpracovaných dotazů, protože je to mnohem užitečnější pro pochopení chování systému.