PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Posso convincere Ecto a registrare SQL grezzo?

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 di EXECUTE 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.