应用必须假设所有的输入都是恶意的输入,并采取措施确保攻击者无法使用专门设计的输入破坏应用程序,干扰其逻辑结构与行为,或者非法访问其数据和功能。
1、用户可干预客户与服务器之间传送的所有数据,包括: 请求参数、cookie、HTTP信息头。可以轻易避开客户端执行的任何安全控件,如输入确认验证。
2、用户可按任何顺序发送请求,并可在应用程序要求之外的不同阶段不止一次提交或根本不提交参数。 用户的操作可能与开发人员对用户和应用程序交互方式做出的任何假设完全不同。
3、用户并不限于仅使用一种web浏览器访问应用程序,大量各种各样的工具可以协助攻击web应用程序,这些工具即可以整合在浏览器中,也可以独立于浏览器运作。这些工具可以提出普通浏览器无法提交的请求,并且能够迅速生成大量的请求,查找和利用安全问题达到自己的目的。
现状:绝大多数针对web应用程序的攻击都涉及向服务器提交输入,意在引起应用程序设计无法预料或不希望出现的事件。
举例说明,专门设计的输入
001 更改以隐藏的HTML表单字段提交的产品价格,以更低廉的价格欺诈性购买该产品
002 修改在HTTP cookie中传送的回话令牌,劫持另一个验证用户的会话
003 利用应用程序处理过程中的逻辑错误删除某些正常提交的参数
毋庸置疑:SSL无法阻止攻击者向服务器提交专门设计的输入。应用程序使用SSL仅仅表示网络上的其他用户无法查看或者修改传送的数据。因为攻击者控制着SSL通道的终端,能够通过这条通道向服务器传送任何内容。