rspec/rules/S4829/python/rule.adoc

63 lines
1.3 KiB
Plaintext
Raw Normal View History

include::../description.adoc[]
include::../ask-yourself.adoc[]
include::../recommended.adoc[]
== Sensitive Code Example
Python 2 and Python 3
----
import sys
from sys import stdin, __stdin__
# Any reference to sys.stdin or sys.__stdin__ without a method call is Sensitive
sys.stdin # Sensitive
for line in sys.stdin: # Sensitive
print(line)
it = iter(sys.stdin) # Sensitive
line = next(it)
# Calling the following methods on stdin or __stdin__ is sensitive
sys.stdin.read() # Sensitive
sys.stdin.readline() # Sensitive
sys.stdin.readlines() # Sensitive
# Calling other methods on stdin or __stdin__ does not require a review, thus it is not Sensitive
sys.stdin.seekable() # Ok
# ...
----
Python 2 only
----
raw_input('What is your password?') # Sensitive
----
Python 3 only
----
input('What is your password?') # Sensitive
----
Function <code>fileinput.input</code> and class <code>fileinput.FileInput</code> read the standard input when the list of files is empty.
----
for line in fileinput.input(): # Sensitive
print(line)
for line in fileinput.FileInput(): # Sensitive
print(line)
for line in fileinput.input(['setup.py']): # Ok
print(line)
for line in fileinput.FileInput(['setup.py']): # Ok
print(line)
----
include::../see.adoc[]