首页 » PHP和MySQL Web开发(原书第4版) » PHP和MySQL Web开发(原书第4版)全文在线阅读

《PHP和MySQL Web开发(原书第4版)》15.2 安全威胁

关灯直达底部

网站上存在什么样的危险?网站之外有什么威胁?我们在第14章中已经讨论了电子商务交易的一些威胁。

根据网站实际情况,安全威胁可能包括:

■机密数据的泄露

■数据丢失和数据损坏

■数据修改

■拒绝服务

■软件错误

■否认

我们将逐一介绍每个安全威胁。

15.2.1 机密数据的泄露

存储在计算机上的数据,或者从计算机发送或接收的数据都可能是机密的。它可能仅仅是一些人要看的信息,例如批发价清单。也可能是一个顾客提供的机密信息,例如密码、联系方法及信用卡号码。

不要将不希望被别人看到的信息存储到Web服务器上。Web服务器不应该是存放机密信息的地方。如果要将你的薪水记录等机密信息放到计算机上,最好使用非服务器计算机。Web服务器本身就是公众访问的机器,应该只包含需要提供给公众的信息,或者最近从公众那里收集到的信息。

要减少数据泄露的危险,必须限制访问信息的方法以及能够访问这些信息的用户。这就要求在设计的时候要考虑安全问题,正确配置服务器与软件,编程时要小心谨慎,进行完全的测试,从Web服务器上删除不必要的服务,并且要求身份验证。

小心谨慎地设计、配置、编码和测试可以减少成功恶意攻击的危险,同样重要的是,可以减少由于软件错误导致的信息意外泄露。

我们还需要从服务器上删除不必要的服务,这样可以减少潜在弱点的数量。正在运行的每个服务都可能存在弱点。每个服务必须经常更新以保证那些众所周知的弱点不再呈现出来。没有使用的服务可能更加危险。如果从来没有使用过命令rcp,服务器为什么已经安装了这个服务呢?即使目前使用了rcp命令,也应该删除它,而使用scp(secure copy,安全复制)命令。如果告诉安装程序机器是一台网络主机,主Linux分区和Windows NT会安装许多不必要的服务,应该删除它们。

身份验证的意思是请人们证明他们的身份。当系统知道哪个用户正在请求的时候,它可以判断这个人是否有访问权限。身份验证的具体实现可以有许多不同的方法,但是通常只使用其中两种形式——密码和数字签名。我们在后面将更详细地讨论它们。

CD Universe就是一个很好的例子,它因为机密信息的泄露而导致经济和名誉的双重损失。

1999年下半年,据传闻一个自称是Maxus的入侵者联系了CD Universe,声称已经从他们的网站上窃取了300 000个信用卡号码。他以销毁这些号码为条件要求100 000美元。他们拒绝了,然后发现自己处于非常尴尬的境地,他们上了主要报纸的头条,因为Maxus将这些号码发放出去供别人滥用了。

当数据在网络上传输的时候,也存在泄露的危险。尽管TCP/IP网络有许多很好的性能,这些使TCP/IP成为将不同网络连接成互联网的实际上的标准。但是安全性能不是这些很好性能之一。TCP/IP将数据分成信息包,然后将这些信息包从一台机器向另一台机器发送直到终点。这意味着数据在发送的路途中经过了许多不同的机器,如图15-1所示。数据途经这些机器中的任何一台时,这台机器都有可能看到数据。

图 15-1 通过互联网传输信息,将使信息途经一些并不安全的主机

要查看数据发送到特定机器所途径的路由,可以使用命令traceroute(在UNIX机器上)。该命令给出数据到达目的主机所经历机器的地址。对本国内的目的主机,数据可能经过10台不同的机器。对于一台国际性的目标主机,中间可能经过了多于20台的机器。如果一个公司的网络大而复杂,数据可能甚至在离开办公楼之前就要经过5台机器。

要保护机密信息,可以在将它们通过Internet发送之前进行加密,然后再在另一端解密。通常,Web服务器会使用Secure Sockets Layer(SSL,加密套接字层),它由Netscape开发,用于数据在Web服务器和浏览器之间传输时的加密和解密。这是一个成本低、使用简单的安全传输方法。但是因为服务器需要加密数据而不是简单地发送和接受数据,该机器可以容纳的每秒访问量可能会急剧下降。