HTTPS 与登录会话:连接安全之后还要做什么
理解加密连接、身份验证、会话与权限检查的分工,并为过期、退出和网络重试设计合理行为。
确认通信的另一端
客户端通过 HTTPS 访问服务时,TLS 负责保护传输过程中的机密性与完整性,并通过证书帮助验证服务器身份。程序需要检查证书是否可信、名称是否匹配等条件。遇到证书错误时,应调查配置和有效期,不能为了连通而把所有证书直接视为可信。
加密连接解决了传输过程中的一部分问题,接口本身仍需要检查输入和访问权限。即使连接完全正常,一个用户也只能读取获准访问的数据。开发时可以把连接、身份、权限三个步骤分别记录错误类别,让连接失败与没有权限得到不同的界面提示。
用会话衔接多次请求
登录成功后,客户端通常持有一个会话标识或令牌,后续请求借此关联到用户。它在有效期间具有访问能力,应像其他敏感凭据一样保管。不要把完整令牌写进日志、错误截图或链接参数,也不要在多个没有关系的功能间随意共享。
会话需要规定空闲超时、最长有效时间和退出行为。具体时长应结合数据敏感程度与使用方式确定。对采用服务端会话的系统,退出时应撤销对应会话;采用令牌的系统则要设计失效和撤销策略。仅关闭窗口或删除界面中的用户名,不能证明服务端访问资格已经结束。
过期与重试保持可预期
编辑较长内容时,用户可能在提交前遇到会话过期。界面可以保留尚未提交的草稿,提示重新登录,再让用户确认提交。浏览器使用会话 Cookie 时,还应正确配置 Secure、HttpOnly 和适合场景的 SameSite 属性,并配合需要的请求伪造防护。
桌面客户端保存凭据时应使用适合平台的受保护存储,避免明文散落在配置文件中。无论客户端形式如何,都要限制自动重试:身份失效先恢复身份,网络故障再按策略重试。对于创建记录等有副作用的操作,还需要重复请求处理机制,防止一次断线造成重复写入。