/
Art86
/
DefectDojo-DevSecOps
Обзор
Документация
Войти
/
Art86
/
DefectDojo-DevSecOps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
dojo/tools/drheader/parser.py
57 строк
2 KB
dogboat
LocationData for parsers (#14395)
02 мар 2026, 09:08
Не верифицирован
02 мар 2026, 09:08
597a1a8
Код
Авторство
О чём код?
import json from django.conf import settings from dojo.models import Endpoint, Finding from dojo.tools.locations import LocationData class DrHeaderParser: def get_scan_types(self): return ["DrHeader JSON Importer"] def get_label_for_scan_types(self, scan_type): return scan_type # no custom label for now def get_description_for_scan_types(self, scan_type): return "Import result of DrHeader JSON output." def return_finding(self, test, finding, url=None): title = "Header : " + finding["rule"] message = finding["message"] + "\nURL : " + url if url is not None else finding["message"] if finding.get("value") is not None: message += "\nObserved values: " + finding["value"] if finding.get("expected") is not None: message += "\nExpected values: " for expect in finding["expected"]: if expect == finding["expected"][-1]: message += expect else: message += expect + "; " severity = finding["severity"].title() find = Finding(title=title, test=test, description=message, severity=severity, static_finding=False) if url is not None: if settings.V3_FEATURE_LOCATIONS: find.unsaved_locations = [LocationData.url(url=url)] else: # TODO: Delete this after the move to Locations find.unsaved_endpoints = [Endpoint.from_uri(url)] return find def get_findings(self, filename, test): items = [] try: data = json.load(filename) except ValueError: data = {} if data != {} and data[0].get("url") is not None: for item in data: url = item["url"] items.extend(self.return_finding(test=test, finding=finding, url=url) for finding in item["report"]) return items items.extend(self.return_finding(test=test, finding=finding) for finding in data) return items