/
kremls
/
python-course-junior
Обзор
Документация
Войти
/
kremls
/
python-course-junior
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
02-lessons/day-002/task.py
110 строк
4 KB
kremls
day-001 and day-002 done
10 май 2026, 10:27
10 май 2026, 10:27
3821b62
Код
Авторство
О чём код?
def parse_cve(value: str) -> str: if (value is None): return "" normalized_value = value.strip().upper() if normalized_value.startswith("CVE") and len(normalized_value.split("-")) == 3: return normalized_value return "" def sanitize_log_line(value: str) -> str: if (value is None): return "" return value.replace("\n", "\\n").replace("\r", "\\r").replace("\t", "\\t") def slicing_ex(): value = "CVE-2024-12345" print(value[:3]) print(value[4:8]) print(value[9:]) print(value[-1:]) print(value[::-1]) def normalize_username(value: str) -> str: if (value is None): return "" return value.strip().lower() def is_valid_severity(value: str) -> bool: if (value is None): return False allowed_values = ("LOW", "MEDIUM", "HIGH", "CRITICAL") normalized_value = value.strip().upper() return normalized_value in allowed_values def contains_possible_secret(line: str) -> bool: if (line is None): return False possible_secrets = ("password", "secret", "token", "api_key") normalized_line = line.strip().lower() return any(secret in normalized_line for secret in possible_secrets) def encoding_ex(): with open("sample.txt", "r", encoding="utf-8") as file: content = file.read(); print(content) data = content.encode("utf-8") print(data) decoded = data.decode("utf-8") print(decoded) def main(): print(parse_cve(" cve-2024-12345 ")) # CVE-2024-12345 print(parse_cve("bad-value")) # "" slicing_ex() # Упражнение 1 — slicing print(normalize_username(" Alice ")) # Упражнение 2 — normalize username print(is_valid_severity("HiGh")) # Упражнение 3 — validate severity print(contains_possible_secret("DB_PASSWORD=123")) # Упражнение 4 — detect possible secret print(contains_possible_secret("username=alice")) # Упражнение 4 — detect possible secret print(sanitize_log_line("admin\nrole=user")) # Упражнение 5 — sanitize log line encoding_ex() # Упражнение 6 — encoding if __name__ == "__main__": main() # 13. Контрольные вопросы для самопроверки # Ты должен уметь объяснить: # Что такое str? # Тип данных в python # Почему строки immutable? # Под строку выделяется место в памяти, после которого уже может не быть свободного места для его изменения, думаю так # Как работает text[0:3]? # Вернёт новы список с индексом от 0 по 3 (не включая) от исходного # Почему end index не включается? # чтобы не выйти за границы # Чем strip() отличается от replace()? # Удаляет пробелы с начала и конца, replace заменит везде # Зачем normalizing перед validation? # Унифицировать формат данных # Чем str отличается от bytes? # str - unicode, bytes - байтовое представление # Что делает encode()? # Преоборазует в байты # Что делает decode()? # Преоборазует в указанную кодировку # Почему нужно явно указывать encoding при чтении файлов? # чтобы избежать ошибок декодирования # Почему replace("<script>", "") не является защитой от XSS? # Можно сделать так <script > например