Http 简明教程
HTTP - Security
HTTP 用于互联网上的通信,因此应用程序开发人员、信息提供者和用户应该知道 HTTP/1.1 中的安全限制。本讨论未包含此处提到的问题的确切解决方案,但它确实提出了一些减少安全风险的建议。
Personal Information Leakage
HTTP 客户端通常能够获得大量个人信息,例如用户名、位置、邮箱地址、密码、加密密钥等。因此,你应该非常小心,避免通过 HTTP 协议将这些信息无意中泄漏给其他来源。
-
所有机密信息都应以加密形式存储在服务器上。
-
透露服务器的特定软件版本可能会使服务器计算机更容易受到针对已知含有安全漏洞的软件发起的攻击。
-
充当网络防火墙门户的代理应针对标识防火墙后面主机的信息标头传输采取特殊的预防措施。
-
“From”字段中发送的信息可能与用户的隐私权限或其网站的安全策略相冲突,因此不应在用户无法禁用、启用和修改字段内容的情况下传输该信息。
-
如果引用页面是通过安全协议传输的,则客户端不应在(非安全)HTTP 请求中包含 Referer 标头字段。
-
使用 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 标头的值,以确保它们不会尝试使它们没有权限的资源无效。