Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check for hardcoded passwords in class attributes #766

Merged
merged 4 commits into from Feb 8, 2022
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 8 additions & 0 deletions bandit/plugins/general_hardcoded_password.py
Expand Up @@ -36,6 +36,7 @@ def hardcoded_password_string(context):

- assigned to a variable that looks like a password
- assigned to a dict key that looks like a password
- assigned to a class attribute that looks like a password
- used in a comparison with a variable that looks like a password

Variables are considered to look like a password if they have match any one
Expand Down Expand Up @@ -79,6 +80,9 @@ def hardcoded_password_string(context):
for targ in node._bandit_parent.targets:
if isinstance(targ, ast.Name) and RE_CANDIDATES.search(targ.id):
return _report(node.s)
elif isinstance(targ, ast.Attribute) \
and RE_CANDIDATES.search(targ.attr):
return _report(node.s)

elif (isinstance(node._bandit_parent, ast.Subscript)
and RE_CANDIDATES.search(node.s)):
Expand All @@ -105,6 +109,10 @@ def hardcoded_password_string(context):
if RE_CANDIDATES.search(comp.left.id):
if isinstance(comp.comparators[0], ast.Str):
return _report(comp.comparators[0].s)
elif isinstance(comp.left, ast.Attribute):
if RE_CANDIDATES.search(comp.left.attr):
if isinstance(comp.comparators[0], ast.Str):
return _report(comp.comparators[0].s)


@test.checks('Call')
Expand Down