Ecto verwendet nur vorbereitete Anweisungen. Bei Verwendung der ecto-Abfragesyntax ist die Einführung von SQL-Injection nicht möglich. Die Abfragesyntax überprüft zur Kompilierzeit, dass keine SQL-Injection möglich ist.
Das genaue Anzeigen der ausgeführten Abfragen kann aus folgenden Gründen schwierig sein:
- Postgrex (und damit Ecto) verwendet das postgresql-Binärprotokoll (anstelle des gebräuchlichsten, aber weniger effizienten Textprotokolls), also
PREPARE
Abfrage existiert nie wirklich als Zeichenfolge. - In den meisten Fällen würden Sie nur ein anfängliches
PREPARE 64237612638712636123(...) AS ...
sehen und später vielEXECUTE 64237612638712636123(...)
was nicht so hilfreich ist. Der Versuch, eine Beziehung zueinander herzustellen, wäre schrecklich.
Meiner Erfahrung nach verwendet die meiste Software dieser Art Prepare-Anweisungen und protokolliert sie anstelle von Rohabfragen, da dies viel hilfreicher ist, um das Verhalten des Systems zu verstehen.