尝试访问

http://mdsec.net/auth/178/

http://mdsec.net/auth/182/

img001  注解  在一些登录组件随机变化的应用程序中,应用程序在一个阶段收集用户的全部证书。例如,主登录页面中可能显示一个表单,其中包含用户名、密码和一个机密问题字段,且当每次加载登录页面时,机密问题都会发生改变。在这种情况下,机密问题的随机性根本无法阻止已经截获一名用户在某个时候的输入信息的攻击者重新传送有效的登录请求,也无法修改登录过程以实现这种目的,因为攻击者只需重复加载登录页面,直到找到他知道答案的问题。在另一种类似的情况下,应用程序可能会设置一个持久性cookie,“确保”向特定用户提出相同的问题,直到该用户正确回答这个问题。当然,攻击者只需修改或删除这个cookie就能够轻易避开这种防御措施。

6.3.3 不安全的证书存储

如果应用程序以不安全的方式存储登录证书,那么,即使验证过程本身并不存在缺陷,登录机制的安全也会被削弱。

Web应用程序常常以危险的方式将用户证书存储在数据库中,这包括以明文形式存储密码。 但是,即使使用MD5或SHA-1等标准算法对密码进行散列处理,攻击者仍然可以在预先计算的散列值数据库中查找观察到的散列。因为应用程序使用的数据库账户必须能够随时读/写这些证书,攻击者可以利用应用程序中的许多其他漏洞访问这些证书,例如,命令、SQL注入漏洞(参阅第9章)或访问控制漏洞(参阅第8章)。