API 客户端开发关键技术解析
1. 验证传入数据
在创建 API 客户端时,处理传入消息是一项重要任务。因为每个服务响应在被证明安全之前,都可能包含恶意数据、可执行脚本或不良数据,会导致客户端应用程序异常。所以,拥有安全处理传入负载的策略对于构建成功的 API 生态系统至关重要。
1.1 问题
客户端应用程序如何确保传入消息不包含危险或恶意内容?
1.2 解决方案
API 客户端应用程序应仔细检查传入消息(服务响应),并移除或忽略任何危险内容。在编写客户端应用程序代码时,可以遵循以下基本原则:
- 始终过滤传入数据。
- 采用“允许列表”模型而非“拒绝列表”来批准内容。
- 为所有数据值维护“最小值/最大值”范围,并拒绝超出该范围的任何数据。
此外,客户端应用程序还有另外两道防线:语法验证(基于预期的数据类型)和语义验证(基于该数据类型的预期值)。例如,邮政编码、电话号码、个人身份号码等复杂类型都需要进行语法验证。客户端应用程序应能够识别何时需要这些类型的数据,并知道如何验证其结构。
API 客户端应秉持“不惜一切代价保护自己,甚至拒绝处理请求”的原则,这与 Postel 定律(健壮性原则)有所不同,但有其合理性。客户端应只关注已知的内容值,确保这些值合理,并仅对这些字段执行预定操作。
客户端应用程序还应尽力验证消息内容的语义值。例如,当提供日期范围(如 startDate 和 stopDate)时,必须验证 startDate 的值早于 stopDate 的值。
1.3 示例
Collection
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



