Inhaltsverzeichnis
Installation und Konfiguration
Externe Pycharm-Konfigurationstools
Überprüfen Sie eine einzelne Datei
Überprüfen Sie das gesamte Verzeichnis
Scannen einer einzelnen Datei oder eines Projektverzeichnisses in PyCharm
Hinweis: Nachfolgende Technologiefreigaben, sofortige Updates sowie zeitnahere technische Informationen und technische Lernmaterialien werden auf dem offiziellen Konto CTO Plus veröffentlicht . Bitte folgen Sie dem offiziellen Konto: CTO Plus
Im vorherigen Artikel haben wir Bandit als Tool vorgestellt, das speziell zum Scannen von Sicherheitslücken in Python-Code verwendet wird. Das Scannen von Sicherheitslücken im Code ist einer der wichtigen Schritte zur Gewährleistung der Softwaresicherheit. Während des Softwareentwicklungsprozesses gibt es viele potenzielle Sicherheitslücken. Um diese Schwachstellen rechtzeitig zu entdecken und zu beheben, müssen wir professionelle Sicherheitsscan-Tools verwenden. Bandit kann uns dabei helfen, potenzielle Sicherheitsrisiken im Code zu überprüfen, z Injektion, XSS-Angriffe, SQL-Injektion und Verlust vertraulicher Informationen usw.
In diesem Artikel werde ich dieses beliebte Tool zum Scannen von Code-Sicherheitslücken, Bandit, unter der Python 3.11-Version vorstellen. Ich werde die Eigenschaften, Verwendungs- und Anwendungsszenarien von Bandit in Projekten vorstellen und seine Verwendung anhand eines praktischen Falls demonstrieren. und Wirkung.
Dieser Artikel „Python-Code-Scanning: Code Security Vulnerability Scanning Bandit auf Unternehmensebene“ ist der letzte Artikel in der Reihe „Codestandards und Scanning“. Sie können die vorherigen Artikel entsprechend Ihrer eigenen Situation lesen. Gleichzeitig weiterverfolgen Artikel aus dem öffentlichen Account CTO Plus
„ Lesen Sie die Python PEP8-Codespezifikation durch “
„ Python-Code-Scanning: Python-Linter-Tool der neuen Generation Ruff “
„ Python-Code-Scanning: Leichtes Python-Tool zur statischen Code-Analyse Pyflakes “
„ Python-Code-Scanning: Die beste Wahl für die statische Typprüfung von Mypy “
„ Python-Code-Scanning: Code-Sicherheitslücken-Scanning-Bandit auf Unternehmensebene “
Was ist Bandit?
Bandit ist ein auf Python basierendes Tool zum Scannen von Sicherheitslücken im Code, mit dem Sicherheitsprobleme in Python-Code erkannt werden. Es kann Entwicklern helfen, Sicherheitslücken im Code schnell zu erkennen und zu beheben und die Softwaresicherheit zu verbessern. Bandit verwendet das AST-Modul in der Standardbibliothek, um Python-Quellcode in einen Baum zu analysieren, der aus Python-Syntaxknoten besteht. Mit Bandit können Benutzer benutzerdefinierte Tests schreiben. Nach Abschluss der Tests erstellt Bandit einen Sicherheitsbericht für den Quellcode.
Merkmale
Python Bandit hat die folgenden Eigenschaften:
1. Statische Code-Analyse: Python Bandit sucht durch statische Analyse des Quellcodes nach Sicherheitslücken und kann potenzielle Sicherheitsprobleme finden, ohne den Code auszuführen.
2. Benutzerdefinierte Regeln (Regeln zur Erkennung mehrerer Schwachstellen): Python Bandit bietet eine Reihe von Standardregeln. Die integrierten Regeln zur Erkennung mehrerer Schwachstellen umfassen Code-Injection, XSS-Angriffe, SQL-Injection usw. und unterstützen auch benutzerdefinierte Regeln. Wir können unsere eigenen Regeln basierend auf den Anforderungen des Projekts definieren, um spezifische Sicherheitsanforderungen zu erfüllen.
3. Erweiterte Erkennung: Python Bandit kann eine Vielzahl häufiger Sicherheitsprobleme erkennen, z. B. Code-Injection, XSS-Angriffe, Verlust vertraulicher Informationen, schwache Passwörter usw. Es verwendet eine Reihe von Algorithmen und Mustervergleichstechniken, um die Erkennungsgenauigkeit zu verbessern.
4. Berichtserstellung: Python Bandit kann detaillierte Berichte erstellen, einschließlich Beschreibung, Standort und empfohlenen Korrekturen für jedes Sicherheitsproblem. Mithilfe dieser Berichte können wir Sicherheitsprobleme schnell lokalisieren und beheben.
5. Einfache Integration und flexible Konfigurationsoptionen: Bandit kann in andere Tools (z. B. CI/CD-Tools, Editor-Plug-Ins – PyCharm usw.) integriert werden, um das automatisierte Scannen zu erleichtern. Gleichzeitig bietet Bandit eine Fülle von Konfigurationsmöglichkeiten, die je nach Projektanforderungen angepasst werden können.
Ich werde später eine detaillierte Analyse des Quellcodes und der Prinzipien dieses Tools durchführen. Artikel, die dem offiziellen CTO Plus- Konto folgen, sind willkommen. Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht im Hintergrund.
Installation und Konfiguration
Die Verwendung von Python Bandit ist sehr einfach. Befolgen Sie einfach diese Schritte:
1. Python Bandit installieren: Python Bandit kann über den Befehl pip installiert werden, wie unten gezeigt:
pip install bandit
Nachdem die Installation abgeschlossen ist, sehen Sie eine ausführbare Datei bandit.exe im Verzeichnis D:\env311\Scripts.
Bandit konfigurieren
Bandit erfordert standardmäßig keine Konfiguration. Wenn wir eine Konfiguration gemäß den tatsächlichen Anforderungen unseres Projekts vornehmen müssen, können wir eine Konfigurationsdatei mit dem Namen bandit.yaml übergeben. Wir können die Datei im Projektstammverzeichnis erstellen und die Regeln und festlegen Regeln, die überprüft werden müssen. Weitere Konfigurationsmöglichkeiten. Hier ist ein einfaches Beispiel für eine Konfigurationsdatei:
include:
- "*.py"
exclude:
- "tests/*"
plugins:
blacklist_calls: # 检测黑名单函数调用
functions:
- os.system
- subprocess.Popen
In der obigen Konfigurationsdatei gibt „include“ die Dateien an, die überprüft werden müssen, „exclude“ gibt die Dateien oder Verzeichnisse an, die von der Überprüfung ausgeschlossen werden müssen, und „plugins“ gibt die Regeln und Blacklist-Funktionsaufrufe an, die überprüft werden müssen.
Externe Pycharm- Konfigurationstools
Bandit kann als externes Tool in PyCharm installiert werden. Öffnen Sie „Einstellungen“ und navigieren Sie zu „Extras“ > „Externe Tools“. Fügen Sie dort ein neues Tool mit der folgenden Konfiguration hinzu. Weitere Konfigurationsoptionen finden Sie in der offiziellen Dokumentation. Hier sind meine Konfigurationsoptionen:
Nachdem die Konfiguration abgeschlossen ist, können wir das Autopep8-Tool in PyCharm verwenden
Nutzen Sie die Übung
Hier sind einige Best Practices, die Sie berücksichtigen sollten, wenn Sie Bandit zum Scannen nach Sicherheitslücken im Code verwenden:
1. Kombiniert mit Versionskontrolle: Es wird empfohlen, den Scanvorgang von Bandit in Verbindung mit einem Versionskontrollsystem zu verwenden. Dies kann Scanvorgänge vor der Codeübermittlung oder in einer kontinuierlichen Integrationsumgebung durchführen und uns dabei helfen, Sicherheitsprobleme im Code rechtzeitig zu erkennen und zu beheben.
2. Zusammenarbeit mit Editor-Plug-Ins: Bandit bietet Plug-In-Integration mit vielen gängigen Editoren (wie VS Code, PyCharm usw.). Durch die Installation des entsprechenden Plug-Ins können Sie im Editor in Echtzeit Sicherheitslücken im Code prüfen und zeitnah Feedback geben, um die Codequalität zu verbessern.
3. Regelmäßiges Scannen und Aktualisieren: Sicherheitslücken im Code sind ein dynamisches Problem, und es entstehen ständig neue Schwachstellen und Angriffsmethoden. Daher wird empfohlen, Bandit regelmäßig zum Scannen von Sicherheitslücken im Code zu verwenden und die Bandit-Tools und -Regeln rechtzeitig zu aktualisieren, um die Sicherheit des Codes zu gewährleisten.
4. Mit anderen Tools kombinieren: Bandit ist ein hervorragendes Tool zum Scannen von Sicherheitslücken im Code, aber nicht die einzige Option. Im tatsächlichen Einsatz kann es mit anderen Sicherheitsscan-Tools (wie OWASP ZAP, SonarQube usw.) kombiniert werden, um umfassende Scans durchzuführen und die Sicherheit des Codes weiter zu verbessern. Ich werde diese anderen Sicherheitsüberprüfungstools später im Entwicklungsprozess des SDLC-Produkts ausführlich vorstellen. Bitte bleiben Sie auf dem Laufenden für die technischen Artikel hinter CTO Plus .
Befehlszeilenparameter
Hier fasse ich einige häufig verwendete Befehlszeilenparameter des Bandit-Tools zusammen. Weitere Informationen finden Sie in der offiziellen Dokumentation:
--recursive: Alle Dateien im Verzeichnis rekursiv verarbeiten.
--exclude=<Muster>: Auszuschließende Datei- oder Verzeichnismuster festlegen.
--configfile=<Datei>: Geben Sie die Konfigurationsdatei an.
Als Nächstes stellen wir verschiedene Verwendungsmethoden und ein Beispiel vor.
Überprüfen Sie eine einzelne Datei
Mit dem folgenden Befehl kann eine einzelne Python-Datei auf Sicherheitslücken überprüft werden:
bandit /path/to/file.py
Dadurch werden Sicherheitslücken und potenzielle Risiken in der Datei ausgegeben.
Überprüfen Sie das gesamte Verzeichnis
Alle Python-Dateien im gesamten Verzeichnis können mit dem folgenden Befehl auf Sicherheitslücken überprüft werden:
bandit --recursive /path/to/directory
Dadurch wird das Verzeichnis rekursiv durchsucht und alle Python-Dateien auf Sicherheitslücken überprüft.
Scannen einer einzelnen Datei oder eines Projektverzeichnisses in PyCharm
Dadurch werden alle Python-Dateien unter dem angegebenen Pfad gescannt und ein entsprechender Sicherheitsbericht erstellt. Die Ausgabe von Bandit umfasst Informationen wie Schwachstellenstufe, Schwachstellentyp, Schwachstellenbeschreibung und Codespeicherort. Entwickler können anhand der Ausgabeergebnisse Sicherheitsprobleme im Code umgehend erkennen und beheben.
ein Anwendungsfall
Angenommen, wir haben eine Python-Datei namens example.py mit folgendem Inhalt:
import os
def execute_command(command):
os.system(command)
command = input("Enter a command: ")
execute_command(command)
Dieser Code weist eine Sicherheitslücke auf, d. h. die vom Benutzer eingegebenen Befehle werden zur Ausführung direkt an die Funktion os.system übergeben und es besteht die Gefahr einer Codeinjektion.
Wir können Bandit verwenden, um den Code auf Sicherheitslücken zu scannen. Der Befehl lautet wie folgt:
Bandit example.py
Nach Ausführung des obigen Befehls gibt Bandit die folgenden Ergebnisse aus:
[main] INFO-Profil umfasst Tests/*,*.py,*.pyw,*.cgi,*.fcgi,*.pyi,*.rpy,*.wsgi,*.cpx,*.pxd,*.pyx, *.pyd,*.so,*.dll,*.pyc,*.pyo
[main] INFO mit config: .bandit
[main] INFO läuft unter Python 3.9.1
[main] INFO zum Laden von Plugins
[main] INFO-Plugins geladen: BanditBasics, BanditCall, BanditImports, BanditImportsBanned, BanditImportsBlacklist, BanditImportsEnvironment, BanditImportsStdlib, BanditNodeVisitor, BanditPreloader, BanditPythonVersion, BanditSecurityGuard, BanditSecurityNodeVisitor, BanditSecurityPreloader, BanditSecuritySyntax Check, BanditSyntaxCheck, BanditUast, BanditVisitor, BanditVisitorBase, BanditVisitorFactory, BanditVisitorPreloader
[main] INFO läuft auf dem Betriebssystem Posix
[main] INFO [bandit.core.manager] Problem [B607:blacklist_calls] Berücksichtigen Sie mögliche Sicherheitsauswirkungen im Zusammenhang mit dem Unterprozessmodul.
[main] INFO [bandit.core.manager] Problem [B607:blacklist_calls] Berücksichtigen Sie mögliche Sicherheitsauswirkungen im Zusammenhang mit der os.system-Funktion.
[main] INFO [bandit.core.manager] Problem [B701:blacklist] Verwendung einer möglicherweise unsicheren Funktion – erwägen Sie stattdessen die sicherere Verwendung von „subprocess.run“.
Wie aus den obigen Ergebnissen hervorgeht, hat Bandit Sicherheitslücken im Code erkannt und entsprechende Warnhinweise ausgegeben.
Anhand der Ausgabe von Bandit können wir erkennen, dass es im Code ein Problem mit Blacklist-Funktionsaufrufen gibt, und es wird empfohlen, stattdessen sicherere Funktionen zu verwenden.
Anwendungsszenarien
Python Bandit kann in vielen Projekten eingesetzt werden, insbesondere bei solchen, die Benutzereingaben und die Verarbeitung sensibler Daten beinhalten. Im Folgenden sind einige Anwendungsszenarien von Python Bandit aufgeführt, die ich zusammengefasst habe:
1. Webanwendungen: Bei in Python geschriebenen Webanwendungen kann uns Python Bandit dabei helfen, Sicherheitsprobleme wie XSS-Angriffe, SQL-Injection und Command-Injection im Code zu überprüfen.
2. Codeüberprüfung (Codesicherheit): Bei der Entwicklung und Bereitstellung von APIs kann Python Bandit uns dabei helfen, den Code auf Sicherheitslücken zu prüfen, wie z. B. den Verlust sensibler Informationen, Berechtigungsprobleme und Cross-Site Request Forgery (CSRF).
3. Datenverarbeitung: Bei Projekten, die sensible Daten wie Benutzerkennwörter und Kreditkarteninformationen verarbeiten, kann Python Bandit uns dabei helfen, Sicherheitsprobleme im Code zu überprüfen, um die Sicherheit der Daten zu gewährleisten.
4. Open-Source-Projekte: Bei in Python geschriebenen Open-Source-Projekten kann uns Python Bandit dabei helfen, Sicherheitsprobleme im Code zu überprüfen, um die Qualität und Zuverlässigkeit des Projekts zu verbessern.
Zusammenfassen
Python Bandit ist ein leistungsstarkes Tool, das uns bei der Suche nach Sicherheitslücken im Python-Code helfen kann. Es analysiert den Code statisch, um potenzielle Sicherheitsprobleme zu finden, und erstellt detaillierte Berichte. Mithilfe der Empfehlungen im Bericht können wir Sicherheitsprobleme im Code beheben und so die Qualität und Zuverlässigkeit des Codes verbessern. In Szenarien wie Webanwendungen, API-Entwicklung, Datenverarbeitung und Open-Source-Projekten kann Python Bandit eine wichtige Rolle dabei spielen, die Sicherheit unseres Codes zu gewährleisten.
Verweise
- Willkommen bei Bandit – Bandit-Dokumentation
- GitHub – PyCQA/bandit: Bandit ist ein Tool, das entwickelt wurde, um häufige Sicherheitsprobleme in Python-Code zu finden.
- Python-Codespezifikationen: Statisches Scannen von Code auf Unternehmensebene – Codespezifikationen, Logik, Syntax, Sicherheitsprüfungen und automatische Anordnung von Codespezifikationen (1)_pycharm Überprüfen Sie die Codespezifikationen_SteveRockets Blog-CSDN-Blog
- https://blog.csdn.net/zhouruifu2015/article/details/129877179
Python-Kolumne
https://blog.csdn.net/zhouruifu2015/category_5742543
Weitere Informationen · Durchsuchen Sie das öffentliche WeChat-Konto [ CTO Plus ] und folgen Sie ihm, um weitere Informationen zu erhalten. Lassen Sie uns gemeinsam lernen und kommunizieren.
Eine Beschreibung des öffentlichen Kontos finden Sie unter dem folgenden Link
Für weitere spannende Neuigkeiten folgen Sie meinem offiziellen Account und lernen und wachsen Sie gemeinsam.
Standard-Bibliotheksreihe – empfohlene Lektüre:
Empfohlene
Lektüre:
-
Die neuesten 73 integrierten Funktionen der Python-Grundlagen (1)
-
Python-Grundlagen: die neuesten 73 integrierten Funktionen (2)
-
Python-Grundlagen: die neuesten 73 integrierten Funktionen (3)
-
Python-Grundlagen: die neuesten 73 integrierten Funktionen (4)
-
Python-Grundlagen: die neuesten 73 integrierten Funktionen (5)
-
Python-Grundlagen: die neuesten 73 integrierten Funktionen (6)
-
Python-Grundlagen: die neuesten 73 integrierten Funktionen (7)