开发必看:代码提交前,这6个安全漏洞一定要自查(附自查清单)

1 阅读5分钟

作为开发工程师,最头疼的不是写代码,而是写完代码后,被安全团队测出一堆漏洞,返工修改不说,还可能影响上线进度;更怕的是,漏洞没排查干净,上线后出现数据泄露、被攻击等问题,最后自己背锅。

其实很多代码安全漏洞,不用等安全测试环节,提交代码前自己就能自查,既节省时间,又能避免返工。今天就给大家整理了6个开发过程中最容易出现、也最容易忽略的代码安全漏洞,附上自查方法和解决方案,新手也能直接套用。

一、最常见的6个代码安全漏洞(附自查方法)

1. 硬编码密钥/密码(高频漏洞)

很多开发者图方便,会把数据库密钥、API密钥、加密密码直接硬编码在代码里,比如:

String apiKey = "abc1234567890"; // 直接写死在代码中

这种写法看似省事,实则风险极高——一旦代码提交到GitHub、Gitee等平台,密钥就可能被泄露,导致系统被非法访问、数据泄露。

自查方法:提交代码前,全局搜索“key”“password”“secret”“token”等关键词,检查是否有硬编码的敏感信息。

解决方案:使用环境变量、配置文件(不提交到代码仓库)、密钥管理工具存储敏感信息,避免硬编码。

2. SQL注入漏洞(后端高频)

SQL注入是最常见的代码安全漏洞之一,尤其是后端开发中,使用拼接SQL语句的方式查询数据,很容易被攻击,比如:

String sql = "select * from user where username = '" + username + "' and password = '" + password + "'"; // 拼接SQL,存在注入风险

攻击者只要构造特殊的用户名/密码,就能绕开验证,甚至获取整个数据库的数据。

自查方法:检查代码中所有SQL查询语句,是否使用了字符串拼接的方式,尤其是接收用户输入的地方(如登录、查询、提交表单)。

解决方案:使用预编译语句(PreparedStatement)、ORM框架(MyBatis、Hibernate),避免手动拼接SQL;同时对用户输入进行过滤、转义。

3. XSS跨站脚本漏洞(前后端都可能出现)

XSS漏洞主要出现在接收用户输入、并直接渲染到页面的场景,比如评论区、表单提交后显示的内容,攻击者注入恶意脚本,可窃取用户Cookie、冒充用户操作。

自查方法:检查前端页面中,是否直接将用户输入的内容渲染到DOM中,未做任何过滤;后端是否未对用户输入进行转义处理。

解决方案:前端使用vue、react等框架自带的防XSS机制,后端对用户输入进行HTML转义、过滤特殊字符;设置Cookie的HttpOnly属性,防止脚本窃取。

4. 权限越权漏洞(逻辑漏洞,易忽略)

权限越权分为水平越权和垂直越权:水平越权是指用户能访问同级别其他用户的资源(如查看别人的订单),垂直越权是指普通用户能访问管理员的功能(如修改系统配置)。

自查方法:检查接口是否有严格的权限校验,比如查看资源时,是否校验了当前用户的ID与资源所属ID一致;操作敏感功能时,是否校验了用户角色。

解决方案:接口层统一增加权限校验,基于用户角色、资源所属关系做严格判断;避免使用前端隐藏按钮的方式控制权限(前端可绕过)。

5. 代码冗余/无效代码(间接安全风险)

很多开发过程中,会遗留一些测试代码、注释代码、未使用的函数/变量,这些冗余代码不仅增加维护成本,还可能包含敏感信息(如测试用的账号密码),或被攻击者利用。

自查方法:提交代码前,检查是否有未使用的变量、函数、注释中的敏感信息;使用代码检测工具,排查冗余代码。

解决方案:及时删除冗余代码、测试代码;注释中不写敏感信息;养成“写多少、用多少”的习惯。

6. 输入验证缺失(基础漏洞)

对用户输入的内容未做任何验证,比如接收用户提交的手机号、邮箱、文件等,未校验格式、长度、类型,可能导致恶意输入、文件上传漏洞等。

自查方法:检查所有接收用户输入的接口、表单,是否有输入验证逻辑(格式、长度、类型、范围)。

解决方案:对用户输入进行严格校验,比如手机号校验正则、邮箱格式校验、文件类型/大小限制;后端再次校验(避免前端校验被绕过)。

二、代码提交前自查清单(复制即用)

  1. 检查是否有硬编码的密钥、密码、token等敏感信息;

  2. 检查SQL语句是否存在拼接,是否使用预编译/ORM框架;

  3. 检查用户输入是否做了过滤、转义,避免XSS漏洞;

  4. 检查接口权限校验是否严格,避免越权;

  5. 检查是否有冗余代码、测试代码,注释中是否有敏感信息;

  6. 检查输入验证是否完整(格式、长度、类型)。

三、补充说明

以上6个漏洞,是我们团队在服务上百家研发团队时,发现的最高频、最容易忽略的代码安全问题。对于中小型研发团队来说,手动自查效率低、容易遗漏,尤其是团队人数多、代码量大时,很难做到全面覆盖。

我们目前在内部,已经通过一套自动化的代码安全检测方式,将上述自查流程融入到研发过程中,开发者提交代码时,就能自动检测出这些漏洞,不用手动排查,极大提升了效率,也减少了返工和安全风险。

如果你的团队也面临“代码安全自查麻烦、漏洞排查不全面”的问题,评论区回复“自查”,我把我们内部用的自动化自查工具(轻量版)和完整自查清单,免费分享给你。