T09 · Insecure Skill Coding Practices
- Location
scripts/elearning_login.py:100- Finding
Authentication Artifacts and Canvas API Tokens Are Persisted Unconditionally
- Content
View full analysis
None: base_dir.mkdir(parents=True, exist_ok=True) target = base_dir / filename target.write_text(content, encoding="utf-8") LOGGER.debug("已写入调试文件:%s", target) ``` ```python login_result: LoginPreparationResult = auth_client.login_and_prepare_session(dry_run=args.dry_run) dump_debug_artifacts(debug_dir, "entry_response.html", login_result.entry_response.text) dump_debug_artifacts( debug_dir, "query_auth_methods.json", json.dumps(login_result.auth_methods_body, ensure_ascii=False, indent=2), ) dump_debug_artifacts( debug_dir, "get_js_public_key.json", json.dumps(login_result.public_key_body, ensure_ascii=False, indent=2), ) if args.dry_run: LOGGER.info("dry-run 完成:已拿到 lck/authChainCode/publicKey") dump_cookies(debug_dir, auth_client.session) return 0 LOGGER.info("RSA 加密完成。cipher_len=%s", len(login_result.encrypted_password or "")) auth_body = login_result.auth_body or {} dump_debug_artifacts( debug_dir, "auth_execute.json", json.dumps(auth_body, ensure_ascii=False, indent=2), ) LOGGER.info("已提取 loginToken(masked)=%s", mask(login_result.login_token or "")) if login_result.authn_engine_response is not None: dump_debug_artifacts(debug_dir, "authn_engine_response.html", login_result.authn_engine_response.text) dump_cookies(debug_dir, auth_client.session) ``` ```python csrf_token = auth_client.extract_csrf() token_body = token_manager.create_canvas_token(csrf_token) dump_debug_artifacts( debug_dir, "create_token.json", json.dumps(token_body, ensure_ascii=False, indent=2), ) ``` ### Technical Analysis The ...[truncated 3329 chars]- Remediation
View remediation
