2015-08-28 2 views
2

В соответствии с безопасными стандартами CERT (например, https://www.securecoding.cert.org) существуют конкретные стандарты, с отличными примерами того, как выглядит хороший и плохой код, для C, C++, Java, даже Perl, но не Python. Существуют ли какие-либо конкретные стандарты на языке Python, желательно с примерами?Руководства по безопасному кодированию для Python

http://www.pythonsecurity.org/, как представляется, сфокусирован на проблемах безопасности в самом Python и на создание альтернативного двоичного кода Python для их устранения. Благородный, но не совсем активный, причина. Я ищу что-то, что дает указания разработчикам о том, что не делать и что делать вместо этого.

+1

pep8 - это то, что вы ищете Я думаю: P (хотя его рекомендации в целом не обязательно связаны с безопасностью) –

+1

[OWASP] (https://www.owasp.org/index.php/OWASP_Secure_Coding_Practices_-_Quick_Reference_Guide) имеет хорошее общее руководство по безопасной практике кодирования; Однако я не могу рекомендовать какие-либо руководства, ориентированные на python. –

+0

Большинство элементов perl, вероятно, применимы и к python (без ввода пользователем в строках формата?) –

ответ

4

Учитывая, что многие люди рекомендуют руководство по форматированию (PEP8), у меня есть тот, который действительно предназначен для обеспечения безопасности.

Существует проект в OpenStack (очень большая платформа на основе python), называемая Bandit. Это инструмент безопасности.

https://github.com/openstack/bandit

Вы можете запустить этот инструмент против собственного кода, или если вы хотите узнать колбы защищённого кодирования питона, а затем взгляните на каталоге примеров.

0

Вы можете обратиться к моим blogpost за руководство по кодированию в python. Вам необходимо следовать правилам кодирования PEP8. Autopep8 - это инструмент, который автоматически форматирует код Python в соответствии с руководством по стилю PEP 8. Для запуска autopep8:

autopep8 TARGET.py

+1

pep8 отлично подходит для определения проблем стиля, но я ищу проблемы, влияющие на безопасность приложений. Такие вещи, как неспособность очистить ввод, прежде чем передавать его на eval или SQL-запросы. (Cross Site Scripting, SQL Injection и т. Д.) – rtphokie

+0

@rtphokie у вас есть решение вашей проблемы, так как у меня также возникла аналогичная проблема. –

+0

Ничего окончательного, нет. – rtphokie

1

Я бы рекомендовал использовать текстовый редактор с кодом пуха для PEP8 или попытки узнать сами принципы PEP8. PEP8 перечисляет рекомендации по стилю для программистов на Python и достаточно всеобъемлющий, который затем был включен в плагины или непосредственно в редакторы, чтобы обеспечить соответствие кода этим стилям.

Python замечателен тем, что существует много доступных кодовых линтеров, которые рекомендуют правильный стиль на основе PEP8.

Великие примеры этого включают Sublime Text с PyLinter или Flake8 или PyCharm без плагинов (как Freemium, Полноценной для свободного использования).

Я лично рекомендовал бы Flake8 или PyCharm над PyLinter, если вам нравится иметь «творческую свободу», поскольку PyLinter достаточно строг.

2

Одно место, чтобы посмотреть на безопасный стандарт кодирования является

https://vulncat.fortify.com/en

Там вы перечислили ошибки, которые влияют на безопасность кодирования. Он содержит много языков, одним из которых является Python.

Я также искал академический/бесплатный безопасный стандарт кодирования для Python. Я еще не нашел хорошего. Я думаю, что SEI CERT должен подойти и сделать такой стандарт. Согласно их последнему вебинару по Secure Coding, они рассматривают эту возможность.

1

I posted this in another thread, но мы недавно выпустили защитный linter под названием DevSkim для Visual Studio, VS Code и Sublime Text. Он ориентирован на несколько языков и ориентирован на обнаружение уязвимостей.