跳至主要内容
Rosecraft Studios

为什么实习生能看到我的工资?

隐藏管理员页面,并不能证明数据已经受到保护。验收之前,先弄清普通员工能查看、修改、导出和分享什么。

Corey Rosamond · 2026/10/20 · 约 6 分钟阅读

本文为英文原文的简体中文译文。资料和事件日期保留原文发表时的语境;代码示例保持原样。 Read in English

为什么实习生能看到我的工资?

最好在第一位员工问出口之前,就把这个问题弄清楚。

设想一次新内部应用的常规演示。经理很满意:员工目录整洁,搜索正常。有人点击“导出”,表格里出现了姓名和部门,也出现了工资。

这位新员工没有入侵系统,只是用了你提供的按钮。现在,讨论的重点已经从“软件做好了吗”变成了“还有谁下载过这个文件”。

这与封面上的会议室画面一样,都是用于说明问题的假设场景,并非某位客户发生了数据泄露。它揭示了一条站不住脚的验收标准:“管理员页面已经隐藏,普通用户就看不到数据了。”

少一个按钮,证明不了多少事情

登录确认一个人是谁,授权决定这个人能做什么。这是两项不同的工作。OWASP 的授权指南建议只授予完成工作所需的权限、默认拒绝未经允许的访问,并在每次请求时核验权限。这个决定必须由可信的应用组件执行,不能只靠浏览器显示什么来控制。

在这个例子中,从员工目录中移除工资列,可能只是改好了页面,却没有改变底层返回的数据。同样的信息仍可能被发送到浏览器。独立的导出功能也可能返回更多字段。

OWASP 将未经授权访问单个字段的问题归为对象属性级授权失效。允许查看员工记录,并不自动意味着可以读取或修改其中的所有字段。服务应当只返回调用者有权接收的字段,也只接受其有权进行的修改。

对购买软件的人来说,后果很直接:一场漂亮的演示,可能恰好没有验证你花钱要求系统守住的那条边界。

先说清规则,再问功能是否正常

“员工权限”太笼统,无法据此验收。先从具体工作说起。假设一家企业的新协调员需要同事的姓名、工作联系方式和可用时间。部门经理需要自己团队的信息,薪资人员需要薪酬记录。此外,还必须决定谁能修改记录,谁能批量下载。

用普通语言写下这些决定。例如:“协调员可以导出工作通讯录,但导出文件不得包含薪酬字段。”或者:“经理可以审批自己负责部门的变更,但不能审批自己的变更。”这些只是业务规则示例,不是适用于所有企业的薪资政策。组织必须自行决定合适的规则。

工资透明可以是企业有意采取的政策。这里讨论的是软件意外披露信息,而不是员工主动讨论自己的薪酬。要有意识地决定应用应当公开什么,以及哪些其他个人信息仍应受到限制。

为每条流程明确涉及的人员、记录、字段和操作。把查看、修改、导出和分享分别考虑。员工可能确实需要阅读一条记录,却不需要分发整个数据集。

要求用普通账号演示

管理员把所有页面点一遍,只能说明管理员能做什么,无法证明实习生、承包商或部门经理的权限边界。OWASP 的授权测试指南包括不同角色之间,以及权限相同的不同用户之间的访问检查。

请开发团队在获准使用的测试环境中,用虚构记录演示这些边界。可以给他们几项具体任务:

  • 以协调员身份导出通讯录,检查整个文件,包括表格初始视图之外的列。
  • 先以某位虚构员工的直属经理身份打开其记录,再换成其他部门经理的账号尝试。
  • 通过底层应用请求尝试一项事先约定的受限操作,而不只是查看菜单。团队应证明服务器会拒绝这项操作。
  • 撤销一个测试用户的薪资访问权限,演示其现有会话多快会失去相应能力。
  • 生成测试报告,检查谁能打开下载链接,以及链接过期或访问权限撤销后会怎样。

每项测试开始前,都应写下预期结果。否则,无论发生什么,“本来就应该这样”都可能成为方便的解释。同时要确保合法流程仍能正常运行:如果修复后薪资人员也无法处理薪资,就只是换了一个问题。

这是一项有明确范围的验收练习,不是完整的安全评估。具体测试取决于应用,测试人员也必须获得授权。真正有用的证据包括约定的规则、所用账号、尝试的操作和实际结果。

下载文件也是产品的一部分

表格一旦离开应用,修改权限就无法收回别人已经保存的副本。因此,应尽早检查导出功能,包括定时报告和集成系统发送的附件。要问清每个副本去了哪里,由谁控制。

OWASP 也建议保护静态资源,并随着系统变化重新审查权限。应用生成的报告和文档同样需要这样处理。一个受到限制的页面,与一个任何人都能打开的文件链接,是两种不同的结果。

安排专人负责员工入职、转岗和离职时的权限调整,记录授予了什么权限以及原因。供应商新增报告功能时,应重新检查相关规则,不要假设最初的验收已经覆盖一切。

“我们信任员工”并不代表工作已经完成

值得信任的人也可能点错链接、转发文件,或者完全按照演示使用功能。在开头的场景中,责怪新员工,只会回避那个更令人不安的问题:系统为什么把这些数据交给了他们?

如果供应商能展示仪表板,却无法证明限制确实生效,那么交付还缺少重要内容。你不需要先成为安全工程师,才有资格要求看到这些证据。

Rosecraft 可以检查现有应用的角色和数据访问机制,找出缺口,并在保留正常业务流程的前提下,通过测试落实约定的修改。这可能只是对现有软件的一次针对性改进,而不需要重做整个系统。

不确定应用中谁能看到什么?请带来角色、业务流程,以及一类应受限制的信息。如果你愿意听清真正需要修复的问题,而不只是被整洁的仪表板安慰,欢迎联系 Rosecraft。在员工不得不问出口之前,先把答案弄清楚。

作者:Corey Rosamond,Rosecraft 创始人兼首席工程师

继续阅读

订阅工作室邮件

留下邮箱以接收工作室更新。订阅后请检查确认邮件;确认邮件目前使用英文。

了解隐私政策

下一步,从交流开始

把您的问题,变成清晰的下一步。

告诉我们您想开发或改进什么。我们会一起梳理范围、限制和合适的工程方案。

聊聊项目