阶段:实施
假设所有输入都是恶意的。使用“接受已知的好的”输入验证策略,即使用严格符合规格的可接受输入列表。拒绝任何不严格符合规格的输入,或将其转换为可以做的事物。
执行输入验证时,请考虑所有潜在的相关属性,包括长度,输入类型,可接受值的全部范围,缺失或额外的输入,语法,跨相关字段的一致性以及符合业务规则的一致性。作为业务规则逻辑的一个示例,“船”可能在句法上有效,因为它仅包含字母数字字符,但是如果仅预期输入包含诸如“红色”或“蓝色”之类的颜色,则无效。
不要仅仅依靠寻找恶意或畸形的输入。这可能会错过至少一个不良的输入,尤其是如果代码的环境发生变化。这可以为攻击者提供足够的空间来绕过预期的验证。但是,拒绝者对于检测潜在攻击或确定哪些投入是如此畸形以至于应直接拒绝。
|