Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Типы сканирования в контексте безопасности и анализа данных
Под «сканированием» в разработке понимают различные процессы автоматизированной проверки: безопасность, качество кода, уязвимости. Расскажу о основных типах, которые встречаются в промышленной разработке.
1. Сканирование уязвимостей (Vulnerability Scanning)
import subprocess
def scan_dependencies():
"""Проверяет requirements.txt на известные уязвимости"""
result = subprocess.run(
["pip-audit"],
capture_output=True,
text=True
)
return result.stdout
print("Scanning for vulnerable dependencies...")
vulnerabilities = scan_dependencies()
Что проверяет:
- Известные CVE (Common Vulnerabilities and Exposures)
- Устаревшые версии пакетов
- Небезопасные зависимости
Инструменты: pip-audit, Safety, OWASP Dependency-Check, Snyk
2. SAST (Static Application Security Testing)
from flask import Flask, request
app = Flask(__name__)
@app.route("/search")
def search():
query = request.args.get("q")
result = db.execute(f"SELECT * FROM users WHERE name LIKE '{query}'")
return result
Что проверяет:
- SQL injection
- XSS (Cross-Site Scripting)
- Path traversal
- Hardcoded secrets
- Небезопасные функции
Инструменты: Bandit, SonarQube, Semgrep, Ruff
3. DAST (Dynamic Application Security Testing)
DAST инструменты запускают приложение и отправляют вредоносные запросы для проверки реального поведения.
Инструменты: OWASP ZAP, Burp Suite
4. Сканирование качества кода (Code Quality Scanning)
def process_data(data):
result = []
for item in data:
if item['status'] == 'active':
if item['age'] > 18:
if item['premium']:
result.append({"id": item['id'], "name": item['name']})
return result
# Лучше:
def get_premium_adults(users):
return [
{"id": u['id'], "name": u['name']}
for u in users
if u['status'] == 'active' and u['age'] > 18 and u['premium']
]
Инструменты: Pylint, Flake8, Ruff, Radon, SonarQube
5. Сканирование секретов (Secret Scanning)
import os
from dotenv import load_dotenv
load_dotenv()
DATABASE_PASSWORD = os.getenv("DB_PASSWORD")
API_KEY = os.getenv("API_KEY")
Инструменты: git-secrets, TruffleHog, detect-secrets, GitGuardian
6. Сканирование конфигураций
from flask import Flask
app = Flask(__name__)
app.config['DEBUG'] = os.getenv('DEBUG', 'False') == 'True'
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY')
app.config['SESSION_COOKIE_SECURE'] = True
app.config['SESSION_COOKIE_HTTPONLY'] = True
Инструменты: Checkov, Kube-score, Trivy
7. Сканирование зависимостей
Проверка requirements.txt на известные уязвимости в версиях пакетов.
Инструменты: pip-audit, Safety, Snyk, Dependabot
8. Сканирование контейнеров
trivy image my-app:latest
Инструменты: Trivy, Grype, Clair, Harbor
9. Сканирование лицензий
Проверка совместимости лицензий всех зависимостей.
Инструменты: FOSSA, Black Duck, pip-licenses
10. Интеграция в CI/CD
Профессиональный проект использует комбинацию всех типов сканирования в автоматизированном pipeline для обеспечения безопасности и качества на каждом этапе разработки.