Fellow PostgreSQL fans,
Last year there was a pretty lengthy discussion (Tom Lane offered a lot of 
insights) on this list about deprecating the PGPASSWORD environmental variable. 
 I understand the security issues here very well.  However, up through version 
8.1, it has been easy to use pg_dump and pg_restore from other applications 
(PHP, Java, etc.) by capturing the Password prompt on stderr and sending the 
password on stdin.  No more.  Now, this interaction is done on low-level I/O 
data streams.  Also, it appears from the documentation that the PGPASSFILE 
environmental variable has been deprecated for pg_dump and pg_restore.  It 
appears the only way these utilities can run from a script or other application 
is to ensure that the user specified in the command-line has a .pgpass file.

I would like to ask that we return to outputting the Password prompt on stderr 
and accepting password input on stdin.  Here are the reasons.

1.  I don't see that this would pose a major security risk.  In fact, in 
applications where the user enters the password for each session, the password 
need never be saved to disk, which seems a definite security advantage.  Some 
folks have noted that .pgpass is a plain text file, hence it could be 
vulnerable.
2.  PostgreSQL has a tradition of respecting generally accepted standards.  The 
use of high-level input/output is a standard for many programming languages.  
3.  PostgreSQL has a tradition of cross-platform compatibility.  Use of 
high-level input/output allows cross-platform applications (e.g., Java) to 
interact with PostgreSQL in a straightforward and standardized fashion.
4.  Low level input/output is considerably more difficult and less reliable for 
other applications to access and work with.

Thanks for considering this matter.

Michael Schmidt

Reply via email to