网站代码安全检查方法,重点是从代码、依赖、身份权限和运行配置等环节逐项找出可被利用的问题,并把修复结果纳入回归测试。下面这10项检查适用于日常开发自查,也可作为上线前的审查清单;发现问题后,应记录受影响功能、复现步骤和修复方式,而不是只关闭告警。
-
静态扫描代码缺陷
使用静态代码分析检查源代码中的危险函数、硬编码凭据、不安全反序列化和错误处理等模式。扫描范围应包括业务代码、脚本和配置文件,并查看告警对应的调用链。对误报写明判断依据;对真实问题修复后重新扫描,确认风险点不再出现。
-
检查第三方依赖
查看依赖清单和锁定文件,识别已停止维护、版本过旧或存在已知漏洞的组件,同时留意间接依赖。升级前评估接口兼容性,在测试环境运行核心功能和安全回归。避免仅凭依赖名称判断风险,也不要为了消除告警而随意替换生产组件。
-
验证输入校验与数据库查询
检查查询参数、表单、请求头和接口数据是否进行类型、长度、格式及取值范围校验。数据库查询应使用参数化语句,不要把用户输入拼接进 SQL 字符串。重点测试引号、特殊字符、超长内容和边界值,确认异常输入不会改变查询逻辑或造成服务报错。
-
逐项测试身份与对象权限
不仅检查用户是否登录,还要验证每个敏感操作是否核对当前用户对目标资源的权限。用两个普通测试账号分别访问对方的订单、文件或个人资料,替换请求中的资源编号,观察是否能越权读取或修改。权限判断应放在服务端,不能只依赖前端隐藏按钮。
-
审查登录、会话与跨站请求防护
检查登录失败限制、密码重置流程和会话失效机制;退出登录或修改密码后,旧会话应按设计失效。对使用 Cookie 身份认证的状态变更请求,检查是否设置合适的 SameSite、Secure、HttpOnly 属性,并采用 CSRF 防护。不要把令牌写入可被脚本读取的位置。
-
检查输出编码与跨站脚本风险
追踪用户输入最终进入 HTML、属性、脚本或 URL 的位置,按输出上下文进行编码;富文本功能应使用允许标签和属性的白名单处理。用包含尖括号、引号和事件属性的测试文本检查页面,确认内容只作为文本显示,不会被浏览器执行。
-
测试文件上传与路径处理
核验上传文件的大小、扩展名、实际文件类型和保存位置,不要仅相信浏览器提交的 MIME 类型。检查文件名中的路径符号、特殊字符及重复名称,确认用户无法覆盖应用文件或访问其他目录。可执行文件应与网站程序目录隔离,并按业务需要限制下载和访问权限。
-
搜索密钥与敏感数据
在代码仓库、配置样例、提交历史和日志中查找 API 密钥、数据库密码、私钥及个人数据。凭据应通过受控的环境配置或密钥管理机制提供,不能提交到公开仓库。若发现已泄露密钥,应撤销并轮换,同时检查相关访问记录,而不只是删除当前文件中的字符串。
-
审查安全配置和错误处理
检查生产配置是否关闭调试输出,错误响应是否暴露堆栈、服务器路径或数据库细节;核对跨域策略是否只允许业务需要的来源。还要查看安全响应头、Cookie 设置和默认账户配置。配置项应有明确默认值,避免因环境变量缺失而意外启用宽松策略。
-
进行动态验证并加入回归测试
在隔离的测试环境中运行网站,使用正常请求和边界输入验证扫描发现,再检查登录、权限、上传及数据修改等关键流程。每个已修复漏洞都应补充自动化测试或明确的人工检查步骤;上线前复测受影响接口,上线后观察异常请求和错误日志,形成持续检查闭环。
实际执行时,可先处理能导致未授权访问、数据泄露或远程执行的问题,再修复影响范围较小的缺陷。将检查结果关联到具体文件、接口和测试用例,能让开发人员复现并验证修复,也能避免同类问题在后续改动中再次出现。