04-验证
7.1.2 验证
验证是质量控制过程,确保只有正确和合理的数据才能被保存。验证有助于防止保存错误数据,防止错误数据传播给其他用户或者系统。比如,当用户挑选航班日期购买机票的时候,航空公司会进行验证,用户选择的是在未来有座位的日期。没有这一验证的话,航空公司的航班预订就会超额、预订了不存在的航班、或者是预订了已经起飞的航班。
客户端和服务端都进行验证是很重要的:客户端验证是为了快速响应,服务端验证是因为永远不能相信来自客户端的代码是有效的。各种各样的问题会导致服务器接收无效的数据。
编程错误会破坏或者遗漏单页应用的客户端验证。
个别客户端可能会缺少验证,有Web服务器的应用经常有多个客户端访问同台服务器。
曾经有效的选项在提交数据的时候可能会失效(比方说,用户刚刚点击提交按钮时,座位被其他人预订了)。
恶意的黑客又会露面并尝试劫持或者破坏网站,用脏数据填满数据存储。
不正确的服务端验证的经典案例是 SQL 注入攻击,这曾使很多著名的组织机构陷入窘境,实际上它们早该明白的。我们不想和它们一样,是吧?