Код: Выделить всё
filename = f"{category.lower()}_{subtype.lower()}_columns.json"
with open(filename, 'r', encoding='utf-8') as f:
data = json.load(f)
Чтобы исправить это, я полностью удалил динамическое построение пути к файлу и заменил его жестко запрограммированным поиском по словарю.
Код: Выделить всё
file_mapping = {
"category_a": {
"subtype_x": "C:/mytrustedfolder/a/x_columns.json",
"subtype_y": "C:/mytrustedfolder/a/y_columns.json",
},
"category_b": {
"subtype_x": "C:/mytrustedfolder/b/x_columns.json",
"subtype_y": "C:/mytrustedfolder/b/y_columns.json",
}
}
Код: Выделить всё
final_path = file_mapping[category][subtype]
with open(final_path, 'r', encoding='utf-8') as f:
data = json.load(f)
Даже после внесения этого изменения Сник по-прежнему помечает это как уязвимость обхода пути, утверждая, что ненадежные входные данные передаются в «open(...)».
Я пробовал:
- Убедиться, что все пути к файлам жестко закодированы в словаре.
- Нормализация путей и проверка попыток обхода.
- Добавление комментария Snyk ignore («# SNYK ignore PathTraversal»), но он
все еще отмечает проблему. (Предложение ChatGPT)
Почему Snyk до сих пор помечает это как уязвимость обхода пути, если все пути к файлам заранее определены в словаре и ими нельзя манипулировать? Есть ли дополнительный способ явно доказать Снику, что это не представляет угрозы безопасности?
Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/793 ... al-warning
Мобильная версия