我在测试中使用了random.choice
。班迪特发出警告。
x = random.choice(lists)
我知道我可以使用# nosec
注释来抑制警告。但在的所有线路上都这样做是不可能的
x = random.choice(lists) # nosec
我想允许使用.bandit
配置文件对具有tests_*.py
的文件进行随机。我从其他样本中发现,你可以对断言这样的东西进行处理,比如:
.土匪
assert_used:
skips: ['test.py$', '^test_*.py']
那么B311有什么办法吗?
根据python -m bandit -r test
,这是可以的
def test_fuzz(): # nosec
for i in range(10):
length = random.randint(0, 200)
如果您不想标记一行(允许# nosec B311
(或使用# nosec
(也忽略B101
(函数,请使用--skips
:
python -m bandit --skip B311 -r test
也许python -m pip install --upgrade bandit
作为1.7支持pyproject.toml
,但不是默认的,所以python -m bandit -r test --config pyproject.toml
:
[tool.bandit]
skips = ["B101", "B311"]
pyproject.toml
至少在Visual Studio代码中取代了setup.cfg
,因此您可能更喜欢python -m bandit -r test --ini setup.cfg
:
[bandit]
skips = B101,B311
正如您所指出的,YAML的嵌套允许每个测试插件进行配置。不幸的是,B311不是一个插件,但我已经为此提交了增强请求。
您可以跳过将#nosec
添加到代码中的操作。
或者,您可以使用命令行中的--skip
参数跳过B311。
如果您使用的是Python 3.6或更高版本,那么通常使用;秘密";库而不是";"随机";图书馆
根据文档机密模块用于生成适用于管理密码、帐户身份验证、安全令牌和相关机密等数据的加密强随机数
虽然你的测试可能不需要加密的强随机数,但除非你生成的随机数是种子,否则这可能也不会造成伤害。
为随机数生成器设定种子将确保随机数生成器在每次运行时发出相同的随机数。这样可以确保您的测试是可重复的。这通常是可取的。
如果出于某种原因,你确实想使用真正的随机数,那么使用秘密和土匪就不会有问题,而且它避免了任何特殊的土匪配置。