Skip to content

Conversation

@yurisich
Copy link

Issue #, if available:

No issue created.

Description of changes:

I attempted to add tests to demonstrate this, but the testing.postgres dependency uses the default username without a password in a manner that I couldn't easily override. If you are interested in setting up a reproduction case, use a password that contains the character # in it and send the generated sqlalchemy segments to AWS. The name of the segment will include the password in it.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Switches away from using `str(engine_instance.engine)` for rendering connection strings, in order to prevent passwords containing characters such as `#` from leaking. The name of the segment will contain the password if this character is used, likely others as well. See: https://bugs.python.org/issue18140 and encode/database#145 The code in question is here: sqlalchemy/sqlalchemy/blob/aea28a9/lib/sqlalchemy/engine/url.py#L597-L630
This uses the same technique of extracting the engine url from the correctly sanitized `__str__()` representation of the engine that the `ext.sqlalchemy.util.decorators.py` module relies on, which does not leak passwords in manner outlined in 9f22fff.
@yurisich yurisich requested a review from a team as a code owner September 26, 2023 19:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant