Open FlorianVeaux opened 4 years ago
An interesting idea. It might be expensive to implement, given the many different ways that connection strings are built. The error handler would have to parse the connection string looking for keywords (perhaps we could live with the limitation that password=
is the only obfuscation trigger) and then alter the connection string before re-raising the exception.
Do you have a patch in mind?
Followup: . . . it appears, from a quick sampling of connectionstrings.com, that PostgreSQL and some IBM databases use pwd=
and everything else uses password=
, so parsing might not be so bad as I feared.
Do you have a patch in mind?
I'm not familiar with the internals of the library enough and haven't had time to look more into it than just opening that issue. That being said if password
and pwd
are the only two keywords, redacting by pattern matching looks like a viable option to me!
Hi
The adodbapi library prints and raise exceptions that contain the complete
connection_string
including the non-redacted password.Some examples: https://github.com/mhammond/pywin32/blob/master/adodbapi/adodbapi.py#L119-L120 https://github.com/mhammond/pywin32/blob/master/adodbapi/adodbapi.py#L257 https://github.com/mhammond/pywin32/blob/master/adodbapi/adodbapi.py#L265 https://github.com/mhammond/pywin32/blob/master/adodbapi/adodbapi.py#L273
Yes it is possible for library users to ignore all exceptions messages but at the cost of visibility and understanding the issue. Yes it is possible to hack around that issue and redact the password somewhere else (what we are doing here: https://github.com/DataDog/integrations-core/blob/7c3d6703f8357973bc33d9bbb13ae0b14fc7de90/sqlserver/datadog_checks/sqlserver/sqlserver.py#L658-L669).
But it'd be better to have that safe-guard in the library itself.