Ecto chỉ sử dụng các tuyên bố đã chuẩn bị trước. Khi sử dụng cú pháp truy vấn ecto, không thể đưa vào SQL injection. Cú pháp truy vấn xác minh tại thời điểm biên dịch rằng không thể đưa vào SQL.
Việc hiển thị chính xác các truy vấn được thực thi có thể khó khăn vì một số lý do sau:
- Postgrex (và do đó là Ecto) sử dụng giao thức nhị phân postgresql (thay vì giao thức văn bản phổ biến nhất nhưng kém hiệu quả hơn), vì vậy
PREPARE
truy vấn không bao giờ thực sự tồn tại dưới dạng một chuỗi. - Đối với hầu hết các trường hợp, tất cả những gì bạn thấy sẽ là một
PREPARE 64237612638712636123(...) AS ...
ban đầu và sau đó rất nhiềuEXECUTE 64237612638712636123(...)
điều đó không hữu ích. Cố gắng liên hệ giữa người này với người khác sẽ rất kinh khủng.
Theo kinh nghiệm của tôi đối với hầu hết các phần mềm thuộc loại đó, hãy sử dụng các câu lệnh chuẩn bị và ghi nhật ký chúng thay vì các truy vấn thô, vì nó hữu ích hơn nhiều trong việc hiểu hoạt động của hệ thống.