Http 简明教程

HTTP - Security

HTTP 用于互联网上的通信,因此应用程序开发人员、信息提供者和用户应该知道 HTTP/1.1 中的安全限制。本讨论未包含此处提到的问题的确切解决方案,但它确实提出了一些减少安全风险的建议。

Personal Information Leakage

HTTP 客户端通常能够获得大量个人信息,例如用户名、位置、邮箱地址、密码、加密密钥等。因此,你应该非常小心,避免通过 HTTP 协议将这些信息无意中泄漏给其他来源。

  1. 所有机密信息都应以加密形式存储在服务器上。

  2. 透露服务器的特定软件版本可能会使服务器计算机更容易受到针对已知含有安全漏洞的软件发起的攻击。

  3. 充当网络防火墙门户的代理应针对标识防火墙后面主机的信息标头传输采取特殊的预防措施。

  4. “From”字段中发送的信息可能与用户的隐私权限或其网站的安全策略相冲突,因此不应在用户无法禁用、启用和修改字段内容的情况下传输该信息。

  5. 如果引用页面是通过安全协议传输的,则客户端不应在(非安全)HTTP 请求中包含 Referer 标头字段。

  6. 使用 HTTP 协议的服务的作者不应使用基于 GET 的表单来提交敏感数据,因为这将导致数据被编码到请求 URI 中。

File and Path Names Based Attack

文档应限于HTTP请求返回的文档,仅限服务器管理员预期的那些文档。

例如,UNIX、Microsoft Windows 和其他操作系统将 '..' 作为路径组件以指示高于当前级别的目录。在这样的系统上,如果 HTTP 服务器会在允许访问该 HTTP 服务器可访问的资源之外的资源,则该服务器必须拒绝请求 URI 中的任何此类构造。

DNS Spoofing

使用HTTP的客户端严重依赖域名服务,因此通常容易受到基于IP地址和DNS名称故意错误关联的安全攻击。因此,客户端在假设IP编号/DNS名称关联的持续有效性时需要谨慎小心。

如果 HTTP 客户端缓存主机名查找的结果以便实现性能改进,则它们必须观察 DNS 报告的 TTL 信息。如果 HTTP 客户端不遵守此规则,则当以前访问过的服务器的 IP 地址发生改变时,它们可能会受到欺骗。

Location Headers and Spoofing

如果一个服务器支持多个互不信任的组织,则它必须检查所生成响应中 Location 和 Content Location 标头的值,以确保它们不会尝试使它们没有权限的资源无效。

Authentication Credentials

现有的 HTTP 客户端和用户代理通常会无限期地保留身份验证信息。HTTP/1.1 没有为服务器提供一种方法来指示客户端丢弃这些缓存的凭据,这是很大的安全风险。

可以通过多种方法解决此问题的各个部分,因此建议在屏幕保护程序、空闲超时以及其他减轻此问题固有安全问题的措施中使用密码保护。

Proxies and Caching

HTTP代理是中间人,代表着中间人攻击机会。代理可以访问与安全性相关的信息、关于个人用户和组织的个人信息、以及属于用户和内容提供商的专有信息。

代理操作员应保护运行代理的系统,因为他们会保护包含或传输敏感信息的任何系统。

缓存代理提供了额外的潜在漏洞,因为缓存的内容代表恶意利用的有吸引力的目标。因此,缓存内容应作为敏感信息进行保护。