Python 的安全编码指南

Secure Coding Guidelines for Python

看看 CERT 安全标准(示例:https://www.securecoding.cert.org),有特定的标准,有很好的例子说明好代码和坏代码,对于 C、C++、Java,甚至Perl 但不是 Python。是否有任何 Python 具体标准作为指南,最好有可用的示例?

http://www.pythonsecurity.org/ 似乎集中在 Python 本身的安全问题上,并构建了一个替代的 Python 二进制文件来解决这些问题。一项崇高但最近并不活跃的事业。我正在寻找可以为开发人员提供指导的东西,告诉他们什么不该做,什么该做。

你可以参考我的blogpost在python中的编码指南。您需要遵循 PEP8 编码指南。 Autopep8 是一种自动格式化 Python 代码以符合 PEP 8 风格指南的工具。至 运行 autopep8:

autopep8 TARGET.py

我建议使用带有代码 linter 的文本编辑器 PEP8,或者尝试自己学习 PEP8 指南。 PEP8 列出了 Python 程序员的风格建议并且非常全面,然后被插件或直接采纳到编辑器中以确保代码符合这些风格指南。

Python 很棒,因为有许多可用的代码 linters,它们推荐基于 PEP8 的正确样式。

很好的例子包括 Sublime Text with PyLinter or Flake8, or PyCharm 没有插件(免费增值,完全免费使用)。

如果你喜欢 "creative liberty",我个人会推荐 Flake8 或 PyCharm 而不是 PyLinter,因为 PyLinter 非常严格。

看到很多人都在推荐格式指南 (PEP8),我有一个实际上是为了安全起见。

OpenStack(非常大的基于 python 的平台)中有一个名为 Bandit 的项目。它是一个安全 lint 工具。

https://github.com/openstack/bandit

您可以 运行 此工具针对您自己的代码,或者如果您想了解安全 python 编码的内部结构,请查看示例目录。

查看安全编码标准的地方是

https://vulncat.fortify.com/en

您列出了影响安全的编码错误。它包含多种语言,Python 是其中之一。

我也一直在为 Python 寻找 academic/free 安全编码标准。我还没有找到一个好的。我认为SEI CERT应该加强并制定这样的标准。根据他们最新的安全编码网络研讨会,他们正在考虑这种可能性。

I posted this in another thread,但我们最近为 Visual Studio、VS Code 和 Sublime Text 发布了名为 DevSkim 的安全 linter。它针对多种语言,并专注于发现安全漏洞。

CERT 正在开发 Python 安全编码标准 - 但他们多年来的努力似乎没有任何结果。

https://wiki.sei.cmu.edu/confluence/display/seccode

几个 CERT 人员在演示中表示 Python 安全编码 v1.0 是 "under development"。