建立一个加密连接,仅需要服务器获得权威机构(如VeriSign)颁发的证书。但是加密仅能阻止攻击者看到站点发送
和接收的数据,它并不能阻止攻击者伪造身份和对站点进行的恶意攻击。
二、伪装成Web站点的合法访问者
现在我们已经知道如何鉴别一个Web站点,但是一个站点如何鉴别它的访问者呢?下面我们就接着讨论这个问题。
大部分Web服务器支持两个密码鉴别方案:基本密码鉴别和分类密码鉴别。两个方案都通过向浏览器发送鉴别信号来进
行。当浏览器第一次收到鉴别信号时,它显示一个对话框询问用户的名字和密码。在基本鉴别模式中,浏览器以简单的文
本形式来传递用户名和密码。在分类鉴别模式中,浏览器传送用户名和密码的消息类。如果服务器发送它的证实,浏览器
就把登录信息存储起来。
如果你用Web服务器上的简单设置来实现这些鉴定方案,Web应用程序中不需要添加任何代码。
攻击者的监听问题:如果访问者以简单的文本形式发送他的用户名和密码,攻击者很容易就可捕获到这些信息。传送
用户信息使用SSL可以很容易地解决这个问题。如下面的例子所示。
User ID: < input type="text" name="user" >
Password: < input type="password" name="password">
如果攻击者不能监听Web站点和访问者之间的通信,他将要采取更加卑劣的手段——伪装成你的合法访问者。造成这种
情况出现的原因一般是访问者自己造成的,因为大部分网络用户在密码选取上不是很留心,他们的密码一般都不是很安
全。他们在登录各个站点时,喜欢使用相同的用户名和密码。
解决这个问题的方法就是访问者在注册帐号时要使用安全的密码。Web站点最好具有能阻止访问者设置英文单词作为密
码的功能,它可以建议用户使用数字和字母混合而成的密码。
三、伪装成Web站点管理员
当访问者登录到你的站点时,你将会保持他们的身份一直有效,直到他们离开该站点。那么如何实现这个功能呢?因
为在浏览器和服务器之间不会建立一个永久的连接,所以服务器会在收到每个页面请求后只建立一个单独的连接。
用户登录成功后服务器是如何证实该用户的身份呢?
答案是浏览器保存了用户的姓名和密码。当浏览器和服务器再次连接时,浏览器将传递已经存储过的用户名和密码。
服务器利用用户数据库来证实这些信息,并会在此基础上作出允许和拒绝访问的决定。
前面我们提到过,浏览器通过比较带有服务器的数字证书的公有名字的URL来证实服务器的身份。这是一个很好的Web
安全防范措施。但是它不能避免所有的伪装服务器的攻击。
域名服务系统(DNS)可把易读的网址(例如www.yourunit.com)解析为IP地址,在你的安全链接中它是一个易遭受攻
击的链接。如果攻击者访问了一个DNS服务器,并且修改了指向他的机器的记录,那么这个机器就可以把所有来自
www.yourunit.com站点的请求全部重定向到www.attacker.com.。在重定向中,访问者的浏览器将显示默认的地址后缀。如
果字符串很长,使www.attacker.com不在视野之内,大部分访问者都不会注意到。
如果攻击者得到VeriSign为www.attacker.com颁发的数字证书,那么访问者的浏览器将和www.attacker.com建立合法
的连接。如果访问者不检查数字证书,他不会知道自己在一个黑客站点上。如果攻击者把他的站点伪装成为和
www.attacker.com的登录界面一样的话,他就能捕获到该客户的银行信用卡帐号。
……