Skip to main content

Pylint plugin adding some checks to make Python code adhere to more secure coding standard

Project description

Pylint Secure Coding Standard Plugin

PyPI - Python Version PyPI version CI Build CodeQL pre-commit.ci status Coverage Status

pylint plugin that enforces some secure coding standards.

Installation

pip install pylint-secure-coding-standard

Pylint codes

Code Description
R8000 Use os.path.realpath() instead of os.path.abspath() and os.path.relpath()
E8001 Avoid using exec() and eval()
E8002 Avoid using os.sytem()
E8003 Avoid using shell=True in subprocess functions or using functions that internally set this
R8004 Avoid using tempfile.mktemp(), prefer tempfile.mkstemp() instead
E8005 Avoid using unsafe PyYAML loading functions
E8006 Avoid using jsonpickle.decode()
C8007 Avoid debug statement in production code
C8008 Avoid assert statements in production code
R8009 Use of builtin open for writing is discouraged in favor of os.open to allow for setting file permissions
E8010 Avoid using os.popen() as it internally uses subprocess.Popen with shell=True
E8011 Use of shlex.quote() should be avoided on non-POSIX platforms
W8012 Avoid using os.open() with unsafe permissions permissions
E8013 Avoid using pickle.load() and pickle.loads()
E8014 Avoid using marshal.load() and marshal.loads()
E8015 Avoid using shelve.open()

Plugin configuration options

File permissions when using os.open

Since version 1.3.0 you can control whether this plugin favors os.open over the builtin open function when opening files.

    [tool.pylint.plugins]
    os-open-mode = '0'            # check disabled
    os-open-mode = '0o000'        # check disabled
    os-open-mode = '493'          # all modes from 0 to 0o755
    os-open-mode = '0o755'        # all modes from 0 to 0o755
    os-open-mode = '0o755,'       # only 0o755
    os-open-mode = '0o644,0o755'  # only 0o644 and 0o755

You can also specify this option directly on the command line:

python3 -m pylint --load-plugins=pylint_secure_coding_standard --os-open-mode='0o755'

Pre-commit hook

See pre-commit for instructions

Sample .pre-commit-config.yaml:

  - repo: https://github.com/PyCQA/pylint/
    rev: pylint-2.6.0
    hooks:
    -   id: pylint
        args: [--load-plugins=pylint_secure_coding_standard]
        additional_dependencies: ['pylint-secure-coding-standard']

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pylint-secure-coding-standard-1.3.1.tar.gz (22.7 kB view details)

Uploaded Source

Built Distribution

pylint_secure_coding_standard-1.3.1-py2.py3-none-any.whl (11.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pylint-secure-coding-standard-1.3.1.tar.gz.

File metadata

  • Download URL: pylint-secure-coding-standard-1.3.1.tar.gz
  • Upload date:
  • Size: 22.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6

File hashes

Hashes for pylint-secure-coding-standard-1.3.1.tar.gz
Algorithm Hash digest
SHA256 8107d0e0df0b69606c06ecb1510805cd1df892ccce44bef73d2be254f0b27c54
MD5 ae3830e9c5a68b2b24cb3cc4e5b27bcf
BLAKE2b-256 859a006675b869f977232b8615649319d19e830c90c76a1bf6d80771d2200759

See more details on using hashes here.

File details

Details for the file pylint_secure_coding_standard-1.3.1-py2.py3-none-any.whl.

File metadata

  • Download URL: pylint_secure_coding_standard-1.3.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6

File hashes

Hashes for pylint_secure_coding_standard-1.3.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ccf294c7de68cf4c23fc156937e4f0402275a0e32f83f1e14b0d2ebec8d36adb
MD5 bb6ab2b705b0770fb08b0072969f6695
BLAKE2b-256 c83842cf11066336dcf4bd2d7cfb964f7300ca8584fe12a632bbbfa9ce1225b0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page