员工能登录报销系统,为什么仍然看不到财务审批页?
员工成功登录,只能查看自己的报销单;财务可以审核全公司的报销。
把“已登录”和“有权操作”混为一谈会造成越权访问。
Authentication 确认用户身份,Authorization 根据 Principal、角色和资源判断权限。
无权限时要决定隐藏入口、禁用操作或展示申请权限,并避免泄露敏感信息。
理解系统如何判断你是谁、能做什么,并保护数据边界。
企业审批、账号与权限、多租户 SaaS、项目与协作、内容与媒体等场景
身份认证确认主体,授权决定主体对资源可以执行哪些操作,安全机制保护通信、数据和运行环境。
登录、角色、按钮显隐、数据范围和敏感操作都依赖完整权限模型。
横跨客户端、API、后端、数据库和基础设施。
Cookie、Session、Token、JWT、OAuth、SSO、RBAC、ABAC、Hash、Encryption 和常见攻击。
企业后台的管理员、项目成员、审批人和访客会看到不同数据与操作。
认证回答“你是谁”,授权回答“你可以做什么”。
先看用户动作和业务风险,再理解技术为什么出现,以及它会怎样改变页面、状态和流程。
员工成功登录,只能查看自己的报销单;财务可以审核全公司的报销。
把“已登录”和“有权操作”混为一谈会造成越权访问。
Authentication 确认用户身份,Authorization 根据 Principal、角色和资源判断权限。
无权限时要决定隐藏入口、禁用操作或展示申请权限,并避免泄露敏感信息。
用户登录后,系统确认身份并建立会话。每次访问资源时,后端根据身份、角色、资源归属和上下文判断是否允许。
权限需要覆盖接口和数据范围。项目成员能查看当前项目,管理员能管理全部项目,访客可能只能读取公开内容。
按钮显隐是权限结果的界面表达,后端权限规则才是最终边界。
HTTP 请求彼此独立,系统需要额外机制保存登录状态。
先看用户动作和业务风险,再理解技术为什么出现,以及它会怎样改变页面、状态和流程。
用户在浏览器登录后台,也在手机 App 登录同一账号。
浏览器与 App 的存储、跨站限制和安全模型不同。
浏览器常用 Cookie 携带 Session 标识,服务端保存会话;App 常用 Token 调用 API。
设计登录过期、跨设备退出、记住登录和敏感操作二次验证。
Cookie 是浏览器保存并随请求发送的小型数据。Session 通常在服务端保存登录状态,Cookie 只保存会话标识。Token 让客户端携带可验证凭证。
不同方案在撤销、扩展、跨端和安全方面各有取舍。敏感凭证需要安全存储、合理过期,并防止被脚本或第三方窃取。
登录过期、异地登录、设备管理和“保持登录”都来自会话策略。
JWT 是凭证格式,OAuth 是授权流程,SSO 是统一登录体验。
先看用户动作和业务风险,再理解技术为什么出现,以及它会怎样改变页面、状态和流程。
用户不想注册新密码,选择 Google 登录。
你的系统不能直接获取用户的 Google 密码,也需要确认授权范围。
OAuth 让 Google 在用户授权后返回凭证,你的系统再创建或绑定本地账号;JWT 可承载签名后的身份声明。
设计授权范围、账号已存在、取消授权、绑定冲突和登录回跳。
员工已登录公司身份平台,再打开项目系统和财务系统。
每个系统重复登录会增加使用成本和账号管理风险。
SSO 让多个应用信任统一身份提供方,企业可以集中停用账号和执行安全策略。
要设计组织选择、身份过期、账号无权限和离职后访问撤销。
JWT 包含 Header、Payload 和签名,服务端可以验证内容是否被篡改。它不自动解决权限、撤销和安全存储问题。
OAuth 让用户授权第三方应用访问有限能力,常用于 Google、GitHub 或微信登录。SSO 让多个企业系统共享统一身份入口。
第三方登录页面要清楚表达来源、授权范围、失败和账号绑定。
JWT 是数据格式;OAuth 是授权流程;两者可以一起使用,也可以分别使用。
角色权限适合稳定分工,属性权限适合动态业务条件。
先看用户动作和业务风险,再理解技术为什么出现,以及它会怎样改变页面、状态和流程。
项目经理可以编辑计划和邀请成员,普通成员只能更新自己的任务。
权限散落在页面判断中容易遗漏,后端也可能被绕过。
RBAC 把权限分配给角色;更细的 ABAC 可根据项目归属、部门、金额和时间动态判断 Policy。
设计权限矩阵,明确按钮隐藏、禁用、申请权限和数据范围。
普通财务可审批五万元以下报销,大额需要财务负责人。
单纯角色无法表达金额、部门和单据状态等上下文条件。
ABAC 根据角色、金额、部门、资源状态等属性执行策略。
审批页要展示当前审批链、升级原因和下一处理人。
RBAC 把权限分配给角色,再把角色分配给用户。它易于理解和管理,适合管理员、编辑、访客等常见模型。
ABAC 根据用户、资源、动作和环境属性判断,例如“项目负责人可以在项目未结项时修改预算”。复杂系统常把角色、数据范围和业务条件组合。
权限设计需要同时交付角色矩阵、数据范围、操作条件和无权限反馈。
安全问题来自不可信输入、伪造请求、错误权限和敏感信息暴露。
先看用户动作和业务风险,再理解技术为什么出现,以及它会怎样改变页面、状态和流程。
攻击者在评论里提交一段恶意 JavaScript。
如果页面直接执行,可能窃取登录信息或冒充用户操作。
服务端和前端对内容转义、过滤并采用安全策略,防止 XSS。
富文本编辑器要明确允许格式,危险内容被清理时给出可理解提示。
用户保持登录状态时访问了攻击者页面。
浏览器可能自动携带 Cookie,恶意页面诱导发送请求,形成 CSRF。
使用 CSRF Token、SameSite Cookie 和敏感操作二次确认;参数化查询防止 SQL Injection。
转账、删除和权限变更等操作需要明确确认、风险提示和操作结果。
XSS 利用未安全处理的内容执行脚本;CSRF 借用用户已登录状态发起伪造操作;SQL Injection 把恶意输入拼进数据库查询。
CORS 控制浏览器跨域访问,它属于浏览器安全策略。输入校验、输出编码、参数化查询、CSRF Token 和合理 Header 可以降低风险。
富文本、链接、文件上传和第三方嵌入都需要明确安全边界和错误提示。
不同机制分别保护密码、数据、密钥和操作可追溯性。
先看用户动作和业务风险,再理解技术为什么出现,以及它会怎样改变页面、状态和流程。
系统同时保存用户密码、加密后的身份证附件和第三方支付 API 密钥。
明文保存会在数据库或代码泄露时造成直接损失。
密码使用不可逆 Hash;敏感数据使用 Encryption;Secret 放入专用配置或密钥管理服务。
产品要提供密码重置、密钥轮换、敏感信息脱敏和访问记录。
合同审批后金额发生变化,管理员需要追溯操作人和变更前后内容。
只有最终数据无法解释过程,也无法满足合规和争议处理。
Audit Log 记录操作者、时间、资源、动作、前后值和请求标识。
历史记录页需要可筛选、可比较,并明确哪些操作不可撤销。
密码通常进行单向 Hash 并加盐,系统不需要恢复原文。Encryption 可以在持有密钥时恢复数据,适合保护敏感字段和传输。
API Key、数据库密码和签名密钥属于 Secret,应由环境或密钥管理系统保存。Audit Log 记录谁在何时对什么资源做了什么操作。
敏感操作确认、日志可见性和权限变更历史都是安全体验的一部分。
为一个项目管理系统写出管理员、负责人、成员、访客四个角色的查看、编辑、删除和成员管理权限矩阵。