- 安全测试教程
- 安全测试 - 首页
- 安全测试 - 概述
- 安全测试 - 流程
- 安全测试 - 恶意软件
- HTTP 协议基础
- HTTPS 协议基础
- 编码和解码
- 安全测试 - 密码学
- 安全测试 - 同源策略
- 安全测试 - Cookie
- 黑客攻击 Web 应用程序
- 安全测试 - 注入攻击
- 测试身份验证漏洞
- 测试跨站脚本攻击
- 不安全的直接对象引用
- 测试安全配置错误
- 测试敏感数据泄露
- 缺少函数级访问控制
- 跨站请求伪造
- 存在漏洞的组件
- 未验证的重定向和转发
- 安全测试 - Ajax 安全
- 安全测试 - Web 服务
- 安全测试 - 缓冲区溢出
- 安全测试 - 拒绝服务攻击
- 测试恶意文件执行
- 安全测试 - 自动化工具
- 安全测试有用资源
- 安全测试 - 快速指南
- 安全测试 - 有用资源
- 安全测试 - 讨论
HTTP 安全
HTTP 安全
HTTP 用于互联网上的通信,因此应用程序开发者、信息提供者和用户都应该了解 HTTP/1.1 中的安全限制。本文讨论不包括此处提及问题的最终解决方案,但它确实提出了一些降低安全风险的建议。
个人信息泄露
HTTP 客户端通常可以访问大量个人信息,例如用户的姓名、位置、邮件地址、密码、加密密钥等。因此,作为用户,您需要非常小心,以防止通过 HTTP 协议意外泄露这些信息到其他来源。
所有机密信息都应以加密形式存储在服务器端。
泄露服务器的特定软件版本可能会使服务器机器更容易受到针对已知包含安全漏洞的软件的攻击。
充当网络防火墙门户的代理服务器应特别注意识别防火墙后主机的标头信息的传输。
在表单字段中发送的信息可能会与用户的隐私利益或其网站的安全策略冲突。因此,在用户能够禁用、启用和修改字段内容之前,不应传输该信息。
如果引用页面是使用安全协议传输的,则客户端不应在非安全 HTTP 请求中包含 Referer 标头字段。
使用 HTTP 协议的服务的作者不应将基于 GET 的表单用于提交敏感数据,因为这会导致这些数据被编码到 Request-URI 中。
基于文件和路径名称的攻击
文档应限于 HTTP 请求返回的文档,这些文档仅为服务器管理员预期的文档。
例如,UNIX、Microsoft Windows 和其他操作系统使用 .. 作为路径组件来指示高于当前目录的目录级别。在这样的系统上,如果 HTTP 服务器允许访问 HTTP 服务器以外的资源,则 HTTP 服务器 MUST 禁止 Request-URI 中的任何此类构造。
DNS 欺骗
使用 HTTP 的客户端严重依赖域名服务,因此通常容易受到基于 IP 地址和 DNS 名称故意错误关联的安全攻击。客户端需要谨慎地假设 IP 号码/DNS 名称关联的持续有效性。
如果 HTTP 客户端缓存主机名查找的结果以提高性能,则它们必须遵守 DNS 报告的 TTL 信息。如果 HTTP 客户端不遵守此规则,则当先前访问的服务器的 IP 地址更改时,它们可能会被欺骗。
位置标头和欺骗
如果单个服务器支持多个互不信任的组织,则它 MUST 检查在这些组织控制下生成的响应中的 Location 和 Content-Location 标头的值,以确保它们不会尝试使它们无权访问的资源无效。
身份验证凭据
现有的 HTTP 客户端和用户代理通常无限期地保留身份验证信息。HTTP/1.1 没有提供服务器指示客户端丢弃这些缓存的凭据的方法,这是一个很大的安全风险。
建议在屏幕保护程序、空闲超时和其他减轻此问题固有安全问题的方法中使用密码保护。
代理和缓存
HTTP 代理是中间人,代表中间人攻击的机会。代理可以访问安全相关信息、有关各个用户和组织的个人信息以及属于用户和内容提供者的专有信息。
代理运营商应像保护任何包含或传输敏感信息的系统一样保护运行代理的系统。
缓存代理提供了额外的潜在漏洞,因为缓存的内容代表了恶意利用的有吸引力的目标。因此,应将缓存内容保护为敏感信息。