mhannan-dev/web_scanner_py

GitHub: mhannan-dev/web_scanner_py

一款模块化设计的 Python Web 安全扫描器,提供 HTTP 头合规检查、表单安全审计和端口 Banner 识别三大被动扫描功能,帮助开发与运维团队在部署前快速评估 Web 应用的安全基线。

Stars: 0 | Forks: 0

# 完整安全扫描器提示词 ## 角色定义 你是一名资深 DevOps 工程师和代码质量审计员,在 Python 开发、安全审计和基础设施自动化方面拥有 10 年以上的经验。你的专业技能包括 Web 应用程序安全、静态代码分析和部署验证。 ## 核心目标 开发一个生产级别的 Python 安全扫描器,执行全面的本地环境健康检查,重点关注 HTTP 安全态势、HTML 结构合规性和网络指纹识别。 ## 技术规范 ### 环境 - **Python 版本**:3.12.10 - **核心库**:requests, beautifulsoup4, json - **附加库**(如需):socket, ssl, re, datetime, logging ### 架构要求 - **模块化设计**:为每个扫描器组件提供单独的模块 - **清晰的关注点分离**:输入处理、扫描逻辑、输出格式化 - **容错能力**:妥善处理网络超时、格式错误的响应和缺失的元素 - **可配置的日志记录**:DEBUG, INFO, WARNING, ERROR 级别 ## 功能需求 ### 1. HTTP HEADER 检查器 **目的**:审计 HTTP 响应头的安全最佳实践 **需检查的强制 Header**: - X-Frame-Options(应为:DENY 或 SAMEORIGIN) - Content-Security-Policy(应包含有效的指令) - X-Content-Type-Options(应为:nosniff) - Strict-Transport-Security(如果使用 HTTPS) - Referrer-Policy - X-XSS-Protection(已弃用,但需检查是否存在) **预期行为**: - 向目标 URL 发送 HEAD/GET 请求 - 解析响应头 - 为每个 Header 生成通过/失败状态 - 为缺失或配置错误的 Header 提供建议 - 处理重定向(最多跟随 5 次) **输出格式**:以 Header 名称为键的字典,每个键包含: ``` { "header_name": { "present": true/false, "value": "actual_value_or_null", "status": "PASS/FAIL/WARNING", "recommendation": "specific_action_needed" } } ``` ### 2. 表单合规审计器 **目的**:分析 HTML 表单是否存在安全 token 以及结构的完整性 **扫描内容**: - HTML 中的所有 `
` 元素 - 检查 CSRF 保护机制: - 命名如下的隐藏输入字段:_token, csrf_token, csrfmiddlewaretoken - 任何名称中包含 'csrf' 或 'token' 的输入项 - 验证表单的 action 属性(不能为空,URL 格式正确) - 验证表单的 method(GET/POST 的合理性) - 检查隐藏字段中是否存在敏感数据泄露 **预期行为**: - 使用 BeautifulSoup 解析 HTML - 遍历所有表单 - 独立分析每个表单 - 记录带有严重级别的问题 **输出格式**:表单审计结果列表: ``` [ { "form_index": 0, "action": "/submit", "method": "POST", "csrf_protection": { "present": true, "field_name": "_token", "field_type": "hidden" }, "issues": ["missing_validation", "exposed_sensitive_data"], "risk_level": "LOW/MEDIUM/HIGH" } ] ``` ### 3. 网络 Banner 记录器 **目的**:识别开放端口并捕获服务 Banner 以进行清单登记 **扫描内容**: - 常见 Web 端口:80 (HTTP), 443 (HTTPS), 8080, 8443 - 应用程序端口:3306 (MySQL), 5432 (PostgreSQL), 6379 (Redis) - 管理端口:22 (SSH), 21 (FTP) - 如果可访问 - 默认超时:每端口 5 秒 **预期行为**: - 尝试对每个端口进行 TCP 连接 - 如果针对特定服务,发送适当的探测数据 - 捕获 Banner 响应的前 1024 字节 - 从 Banner 中识别服务类型 - 如果可以识别,则记录服务版本 **输出格式**:已发现服务列表: ``` [ { "port": 443, "state": "OPEN", "service": "nginx/1.18.0", "banner": "220 FTP Server ready", "protocol": "TCP" } ] ``` ## 附加功能 ### 配置管理 - 支持 YAML/JSON 配置文件 - 可配置项:目标 URL、端口列表、Header 检查项、日志级别 - 默认配置路径:config/scanner_config.json ### 输出格式 - **控制台**:人类可读的彩色输出 - **JSON**:机器可解析的报告 - **HTML**:可视化报告(附加功能) ### 报告功能 - 摘要统计:总检查数、通过、失败、警告 - 扫描执行的时间戳 - 扫描持续时间 - 环境信息(Python 版本,操作系统) ### 安全注意事项 - 不要存储或记录敏感信息(密码、token、API keys) - 在日志中屏蔽敏感数据(例如,Authorization headers) - 处理 SSL 证书验证(允许在配置中设置忽略) - 实施速率限制以避免服务器过载 ## 代码质量标准 ### 文档规范 - 为所有函数和类提供 Google 风格的 docstrings - 包含安装和使用说明的 README.md - 为复杂逻辑提供行内注释 ### 测试 - 为每个组件提供单元测试 - 包含示例测试 URL(使用 localhost 或测试环境) - 在测试中 Mock 外部依赖项 ### 错误处理 - 自定义异常类 - 带有指数退避的重试逻辑 - 为所有网络调用提供超时管理 - 当服务不可用时的优雅降级处理 ## 交付格式 提供一个完整、可运行的 Python 脚本,包含: 1. **主入口点**:`if __name__ == "__main__":` 并支持 argparse 2. **配置加载器**:JSON 配置文件处理器 3. **三个扫描器类**:HeaderInspector, FormAuditor, BannerLogger 4. **报告生成器**:整合所有扫描器的结果 5. **实用功能函数**:日志记录、验证、辅助工具 6. **示例配置**:包含所有选项的完整配置文件 ## 使用示例 ``` python security_scanner.py --url http://localhost:8000 --config config.json --output report.json --log-level INFO ``` ## 成功标准 - 脚本在 Python 3.12.10 上无错误运行 - 所有三个扫描器功能正常,并返回预期输出 - 代码遵循 PEP 8 样式 - 全面的错误处理可防止崩溃 - 输出清晰、结构良好且具有可操作性 - 配置灵活且有完善的文档 ## 限制条件 - 不要包含漏洞利用代码、攻击向量或渗透测试 payload - 不要尝试利用或攻击目标应用程序 - 仅执行被动扫描和信息收集 - 所有网络连接必须是非侵入性的 - 必须安全地处理本地开发环境(localhost, 127.0.0.1) ## 交付说明 提供完整的 Python 脚本,并带有清晰的代码分区,遵循上述所有规范。添加注释解释每个主要代码块,并确保脚本具备生产就绪的错误处理和日志记录能力。
标签:Homebrew安装, Python, Web安全, 主机安全, 实时处理, 密码管理, 无后门, 蓝队分析, 逆向工具