tốt nhất cách là thực hiện tiền điện tử trên máy khách hoặc máy chủ ứng dụng, vì vậy cơ sở dữ liệu không biết khóa là gì và không thể giải mã dữ liệu. Nếu máy khách / máy chủ ứng dụng nằm trên một máy chủ khác thì càng tốt.
Nếu cơ sở dữ liệu của bạn đang mã hóa và giải mã dữ liệu cho bạn, thì rất dễ bị đánh cắp khóa cùng với cơ sở dữ liệu.
Nếu bạn sử dụng các chức năng tiền điện tử trong cơ sở dữ liệu của pgcrypto, bạn có thể yêu cầu ứng dụng gửi khóa cùng với dữ liệu, điều này ít nhất là phần nào hữu ích. Tuy nhiên, nó vẫn có nguy cơ bị lộ các khóa trong nhật ký nếu một sysadmin hữu ích bật tính năng ghi nhật ký báo cáo tích cực hoặc kết xuất kế hoạch tự động, và cuối cùng nếu các khóa được chuyển đến máy cơ sở dữ liệu, chúng sẽ dễ bị tấn công hơn nếu không. . Kẻ tấn công chiếm quyền kiểm soát máy cơ sở dữ liệu cũng có thể thay đổi cài đặt nhật ký, thay thế mã nhị phân postgresql hoặc đánh hơi lưu lượng truy cập để nắm bắt các khóa và dữ liệu theo cách này.
Nếu máy chủ ứng dụng và db ở trên cùng một máy và được quản lý bởi (các) vai trò giống nhau, thì bạn sẽ bớt lo lắng về việc cô lập chúng và có thể hợp lý khi chỉ sử dụng pgcrypto.
Dù thế nào, hãy nhớ ướp muối!