HTTP 安全
HTTP 用于 Internet 通信,因此应用程序开发人员、信息提供者和用户应了解 HTTP/1.1 中的安全限制。此讨论不包括对此处提到的问题的明确解决方案,但确实提出了一些降低安全风险的建议。
个人信息泄露
HTTP 客户端通常了解大量个人信息,例如用户的姓名、位置、邮件地址、密码、加密密钥等。因此您应该非常小心,防止这些信息通过 HTTP 协议无意泄露到其他来源。
- 所有机密信息都应以加密形式存储在服务器上。
- 揭示服务器的特定软件版本可能会使服务器机器更容易受到针对已知包含安全漏洞的软件的攻击。
- 作为通过网络防火墙的门户的代理应该采取特殊的预防措施,以识别防火墙后面的主机的标头信息的传输。
- 在“发件人”字段中发送的信息可能会与用户的隐私利益或其站点的安全策略发生冲突,因此,如果用户无法禁用、启用和修改该字段的内容,则不应传输该信息。
- 如果引用页面是使用安全协议传输的,则客户端不应在(非安全)HTTP 请求中包含 Referer 标头字段。
- 使用 HTTP 协议的服务的作者不应该使用基于 GET 的表单来提交敏感数据,因为这会导致数据在 Request-URI 中编码。
基于文件名和路径名的攻击
该文档应仅限于 HTTP 请求返回的文档,仅限于服务器管理员打算使用的文档。
例如,UNIX、Microsoft Windows 和其他操作系统使用“..”作为路径组件来指示高于当前目录级别的目录级别。在这样的系统上,HTTP 服务器必须禁止在 Request-URI 中的任何此类构造,否则它会允许访问那些旨在通过 HTTP 服务器访问的资源之外的资源。
DNS欺骗
使用 HTTP 的客户端严重依赖域名服务,因此通常容易受到基于 IP 地址和 DNS 名称故意错误关联的安全攻击。因此,客户端在假设 IP 号码/DNS 名称关联的持续有效性时需要谨慎。
如果 HTTP 客户端缓存主机名查找的结果以实现性能改进,则它们必须观察 DNS 报告的 TTL 信息。如果 HTTP 客户端不遵守此规则,则当先前访问的服务器的 IP 地址更改时,它们可能会被欺骗。
位置标头和欺骗
如果一台服务器支持多个彼此不信任的组织,那么它必须检查在所述组织的控制下生成的响应中的位置和内容位置头的值,以确保它们不会试图使它们没有权限的资源无效。
身份验证凭据
现有的 HTTP 客户端和用户代理通常会无限期地保留身份验证信息。HTTP/1.1 没有为服务器提供一种方法来指示客户端丢弃这些缓存的凭据,这是一个很大的安全风险。
有许多解决此问题的方法,因此建议在屏幕保护程序、空闲超时和其他缓解此问题固有的安全问题的方法中使用密码保护。
代理和缓存
HTTP 代理是中间人,这就给了中间人攻击的机会。代理可以访问与安全相关的信息、有关个人用户和组织的个人信息以及属于用户和内容提供商的专有信息。
代理运营商应该保护运行代理的系统,因为他们会保护任何包含或传输敏感信息的系统。
缓存代理提供了额外的潜在漏洞,因为缓存的内容是恶意利用的一个有吸引力的目标。因此,缓存内容应作为敏感信息加以保护。