Security
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代理是中间人,代表了中间人攻击的机会。 代理可以访问与安全相关的信息,个人用户和组织的个人信息以及属于用户和内容提供商的专有信息。
代理运营商应该保护代理运行的系统,因为它们可以保护包含或传输敏感信息的任何系统。
缓存代理提供了额外的潜在漏洞,因为缓存的内容代表了恶意利用的有吸引力的目标。 因此,缓存内容应作为敏感信息进行保护。