攻击政府的Web网站、入侵ISP、电子信用证诈骗、商人和黑客对个人隐私的侵犯——难道这些就是Web的一切吗?\r\n 本书揭露了各种天花乱坠的广告和报道的假像,直接说明在网络中确实存在危险,并讲述如何使之最小化。无论你只是Web的冲浪者(但关心Web的有关知识),还是负责一个重要Web服务器安全的系统管理员,这本书都能够为你提供所需要的知识。本书既有趣又富于启发性,深入探讨了Web技术、Internet中的危险和给人们生活带来的好处等问题。本书包括以下主题:\r\n·用户安全——浏览器的脆弱性、涉及隐私的案例以及关于Java、JavaScript、ActiveX和插件等问题。\r\n·数字认证和密码学——数字认证如何确认身份、什么是代码签名,以及在Internet上应用的密码学的基础知识。\r\n·Web服务器安全——关于SSL、TLS、主机安全性、服务器存取方法和安全CGI/API编程的技术信息。\r\n·商务与社会——电子支付如何实现,什么是分组软件和审查软件,以及需要知道的有关民事和刑事方面的法律问题。\r\n“Garfinkel和Spafford所做的是直接面向Internet和企业安全的关键问题。本书全面阐述了先进的安全技术和应用程序,这是爆炸性的、快速增长的、极受瞩目的安全领域的一项重大工作。”\r\n ——Netscape公司的组安全产品经理Eric Greenberg\r\n“这真的是一本很有用的书,可以帮助人们避开Web中的许多危险。本书写得很好,很及时、信息丰富、全面、易于理解,阅读它科就是一种享受。这是Web应用人员在安全性方面的权威指南。”\r\n ——美国计算机协会(ACM)的RISKS论坛主持人兼“Computer-Related Risks”专栏的作者Peter G.Neumann\r\n“本书包含了对Web用户、网络管理员和开发人员有价值的信息和忠告。Garfinkel和Spafford跳过了一般的营销性问题,而直接告诉我们在真实世界中、Web安全是如何和为什么得以工作和被破坏的。”\r\n ——普林斯顿的网络安全编程主管兼“Java Security”专栏的作者Edward Felten博士\r\n\r\n
前言\r\n\r\n第一部分 概述\r\n\r\n第一章 Web安全状况\r\n\r\nWeb安全简述\r\nWeb安全问题\r\n信用卡、加密以及Web\r\n防火墙:部分解决方案\r\n风险管理\r\n\r\n第二部分 用户安全\r\n\r\n第二章 有Bug的浏览器:风险的形式\r\n\r\n浏览器的发展历史\r\n数据驱动攻击\r\n程序的缺陷:bug简史\r\n\r\n第三章 Java和JavaScript\r\n\r\nJava\r\nJavaScript\r\n拒绝服务攻击\r\n启用JavaScript的诱骗攻击\r\n总结\r\n\r\n第四章 用ActiveX和插件下载机器代码\r\n\r\n当浏览器出现问题时\r\nNetscape插件\r\nActiveX和Authenticode\r\n下载代码的风险\r\nAuthenticode是一个解决方法吗?\r\n提高下载代码的安全性\r\n\r\n第五章 个人隐私\r\n\r\n日志文件\r\nCookie\r\n可以确认的个人信息\r\n匿名服务器\r\n没有预期到的事惰\r\n\r\n第三部分 数字认证\r\n\r\n第六章 数字认证技术\r\n\r\n身份认证\r\n公开密钥机制\r\n建立一个公开密钥机制存在的问题\r\n10个政策问题\r\n\r\n第七章 认证机构和服务器证书\r\n\r\n当前的证书\r\n认证机构证书\r\n服务器证书\r\n结论\r\n\r\n第八章 客户端数字证书\r\n\r\n客户证书\r\n参观VeriSign数字身份证书中心\r\n\r\n第九章 代码签名和Microsoft认证码\r\n\r\n为什么要使用代码签名?\r\nMicrosoft的认证码技术\r\n获得一个软件发行商的证书\r\n\r\n第四部分 密码学\r\n\r\n第十章 密码学基础\r\n\r\n理解密码\r\n对称密钥算法\r\n公开密钥算法\r\n信息摘要函数\r\n公开密钥机制\r\n\r\n第十一章 密码学和网站\r\n\r\n密码学和Web安全\r\n目前运行的加密系统\r\n美国对密码的限制\r\n其他国家和地区对密码的限制\r\n\r\n第十二章 理解SSL和TLS\r\n\r\nSSL是什么?\r\nTLS标准化活动\r\nSSL:用户的观点\r\n\r\n第五部分 Web服务器安全\r\n\r\n第十三章 主机和网站安全\r\n\r\n历史上的主机不安全问题\r\n目前主要的主机安全问题\r\n通过最小化服务来最小化风险\r\n安全内容的升级\r\n后端数据库\r\n物理安全\r\n\r\n第十四章 控制对Web服务器的访问\r\n\r\n访问控制策略\r\n用<limit>块实施访问控制\r\n一个简单的用户管理系统\r\n\r\n第十五章 安全的CGI/API编程\r\n\r\n扩展性的危险性\r\n编码规则\r\n编程语言的具体规则\r\n有关编写运行额外权限的CGI脚本的小技巧\r\n结论\r\n\r\n第六部分 商业贸易与社会交际\r\n\r\n第十六章 数字支付\r\n\r\n交易牌、晚餐俱乐部和信用卡\r\n墓于Internet的交易系统\r\n如何评估信用卡交易系统\r\n\r\n第十七章 审查软件和审核技术\r\n\r\n审查软件\r\nPICS\r\nRSACi\r\n\r\n第十八章 民事法律条款\r\n\r\n知识产权\r\n民事侵权行为\r\n\r\n第十九章 刑事法律条款\r\n\r\n在计算机被非法入侵后你的法律选择\r\n潜在的犯罪危机\r\n犯罪主题\r\n安全操作\r\n法律行动\r\n\r\n第七部分 附录\r\n\r\n附录一 来自Vineyard.net的教训\r\n附录二 建立和安装Web服务器证书\r\n附录三 SSL 3.0协议\r\n附录四 PICS说明\r\n附录五 参考资料\r\n\r\n词汇表\r\n
1996年8月17日, 一个星期六的早晨, 美国司法部的一个计算机系统遭到了袭击. 被袭击的目标是司法部的Web服务器www.usdoj.gov袭击者破坏了它的安全防范系统, 并修改了它的主页——加上了纳粹德国的国徽. 猥琐的图片以及对通信风化法案的诽谤(具有讽刺意味的是:该法案最近被费城的一个联邦法庭宣布为违反美国宪法).
当FBI技术人员发现这个被损毁的Web站点并拔掉插头时, 它已在Internet上保留了几个小时. 接下来由于司法部没有备用的服务器, 因此当人们尝试访问司法部的主页时, 均一无所获.
这次事件使得司法部在国际电台. 电视以及美国报刊等公开场合均处于尴尬的境地. 后来司法部承认:对于Web服务器的安全性, 他们并没有给予太多的关注. 因为这个服务器并没有存放任何机密信息. 毕竟, 这个Web服务器仅仅存放公众可以获取的有关该部门自身的一些信息, 而非有关正在调查的机密信息.
通过Web, 司法部可以利用革命性的新方法向公众发布信息——该系统在降低费用的同时, 还可以使信息更容易被获取. 但显然这次袭击说明这台Web服务器上的信息不能被保密. 由于这台Web服务器是司法部公开面向网上世界的一扇窗口, 因此允许它被改变就等于破坏了司法部的声誉.
无独有偶, 1996年9月18日, 一群瑞典黑客闯入了美国中央情报局(CIA)的Web站点(http:www.odci.gov/cia). 中情局的反应与FBI一样:首先拔掉插头, 然后检查系统. 几个月后, 美国空军的主页上也发生了类似的事件, 国防部关闭了所有可从外部登录的Web服务器, 花了几天时间来确保服务器的安全性并修补缺陷.
1997年3月3日, 星期一, 一种全新的网络威胁崭露头角. Worcester理工学院的学生Paul Greene, 发现了一种特别编写的网页, 它能够通过目标计算机上的任意输入来路得在Microsoft的IE浏览器上执行任何程序. 一个袭击者可以用这个bug去捣毁一台计算机, 可以用病毒感染它, 也可以从它的硬盘上获取私人信息. 这个bug还能使得网络管理员完全控制任何一台用IE访问其Web站点的计算机.
48小时之内, Microsoft就在其Web站点上发布了针对Greene发现的bug的补丁程序, 显示出了该公司的反应能力, 以及网络在发布bug的补丁程序时的高效率. 但还是在这一星期, 人们又在IE浏览器中发现了另外一个同样具有潜在危险效应的巨大缺陷. 同样的问题不仅仅发生在Microsoft身上:在同一星期, 别的研究人员在使用Netscape公司的Navigator浏览器时, 在Sun公司的Java环境中也发现了一个新的bug.
Web:希望与威胁
司法部. 空军和CIA都是幸运的. 因为尽管这些入侵对于他们而言都是一种公开的耻辱, 但这些机构的Web服务器上都没有存放任何机密信息. 几天以后, 这些系统又重新运转起来. 这次, 我们希望安全问题会得到保障. 但事实并非如此. Microsoft以及成千上万的IE用户也是幸运的, 因为尽管IE的bug被大肆渲染, 但并没有导致大范围的数据丢失.
现在反政府的黑客不再是采取强硬的入侵手段, 而是采用一种秘密的入侵方式. 他们用一台中间计算机作为跳板来袭击政府的其他机器. 或者, 他们仅仅对网页做一些细微的改动——例如, 改变电话号码, 伪造令人难堪的引用语, 或者只是在这个网站上放置一些暗含诽谤或指向其他被更改的网页的信息. 这些袭击者还可以安装软件来窥探该组织的网络. 以帮助他们入侵其他更机密的机器.
在www.usdoj.gov遭到入侵的前几天, 马萨谙塞州州政府宣布, 驾驶员可以在Web上支付他们的超速罚款单及其他违反交通规则的罚单. 他们仅仅需要访问机动车辆登记处的网站, 点击几个链接. 就可以用一张信用卡来支付超速罚单了. 该州一位官员说:“与排队支付罚款相比, 我们相信公众更愿意在线支付. ”为了在Internet上安全地接受信用卡, 机动车辆登记处网站使用了一个“安全的”Web服务器. 在这里, “安全的”是指Web服务器和Web浏览器之间的连接是安全的. 这意味着, Web服务器实施了某些密码协议, 当一个人的信用卡号在发送时会进行编码, 从而不会被中途截获.
但是, 由马萨诸塞州政府管理运行的Web服务器并不比司法部的Web服务器更安全. 仅仅使用密码在网络上发送信用卡号, 并不意味着计算机不能被入侵. 而且, 如果这台计算机被入侵, 其后果将远不止在公众中处于尴尬境地. 袭击者们将不再满足于改变网页, 他们可能会在服务器上安装软件以偷偷捕获被解码的信用卡卡号, 然后利用偷取的卡号进行诈骗. 要找出信用卡窃贼的藏身之处, 信用卡公司往往要花费好几个月, 而到那时, 这些窃贼已经转向其他受害者了(注1).
或许, 下一次, 这些袭击者仅仅通过放置强制性HTML代码就能够利用Netscape的Navigator和Microsoft的IE浏览器中广为人知的bug对Web服务器进行入侵了.
这些事件告诉了我们Web上既存在希望又存在威胁. Web的希望在于它能使组织机构在发布信息. 产品以及提供信息的时候, 极大地降低成本. 而威胁则在于:计算机构建成的网络都是脆弱的, 它们能够而且已经被损害过. 更糟糕的是:随着Web的应用越来越广泛, 会有更多重要的组织机构上网, 从而会有更多的人使用它, 结果会使这些计算机成为引人注目的攻击对象.
1997年, 美国Strategic Focus公司(加利福尼亚州Milpitas的一家咨询公司)对400位信息系统经理进行了调查, 结果表明, 对那些准备在网上开展业务的公司来说, 安全性是他们最担心的问题. 这个公司的总裁Jay Prakash说:“对于任何一种电子商务而言, 安全性都是让人最关心的问题, 而且这种情况会持续一段时间”. 他还发现, 在被调查的公司当中, 有55%的公司存在安全隐患.
关于本书
这是一本有关Web安全及电子商务的书. 本书主要展示处于网络世界中的人们所面临的威胁, 并提供减少这些威胁的方法.
本书是为使用Web浏览器在Internet上获取信息的个人, 以及使用Web服务器提供数据和服务的组织机构而编写的. 它包括对基于Internet的计算机安全性问题的概述, 许多章节还阐述了为促进Internet的商业化而产生的新协议和产品.
在本书中, 特别值得注意的是:
联机世界中存在的风险. 威胁及益处
怎样控制在Web服务器上的信息存取
怎样减少Web服务器被攻击的机会
怎样使服务器在遭受到损害后能迅速恢复
什么是加密, 以及怎样用它们来保护你的用户和系统
由于使用Java. JavaScript. ActiveX以及Netscape的插件而产生的安全问题
一些值得讨论的法律问题
本书涵盖了Web安全的基本问题, 但它并不是一本计算机安全. 操作系统或Web的初级读物. 因此, 我们推荐了许多其他由O'Reilly & Associates公司出版的好书. 其中包括Eleen Frisch的《Essential System Administration》. Chuck Musciano和Bill Kennedy的《HTML:The Definitive Guide》. Shishir Gundavaram的《CGI Programming on the World Wide Web》. Deborah Russell和G. T的《Computer Security Basics》, 以及我们编写的《Practical UNIX & Internet Security》. 有关密码学的进一步的探讨请参考Bruce的《Applied Cryptography》(由John Wiley &Sons出版, 译注1).
章节介绍
本书共分7部分, 包括19章和5个附录.
第一部分:概述, 介绍连接到Internet上的计算机安全方面的基础知识.
第一章“Web安全状况”. 本章简短地回顾了Web安全的历史, 介绍了有关Web安全方面的术语, 同时阐释了一些在Web上开展业务时可能面临的风险.
第二部分:用户安全, 指出用户使用不同浏览器时将会面临不同的风险, 提供了当前使用最广泛的两种浏览器(Microsoft的IE与Netscape的Navigator)的相关信息. 这部分内容主要面向一般用户.
第二章“有Bug的浏览器:风险的形式”. 本章阐述了浏览器的发展史, 探讨了其中最大的威胁:因粗心. 草率地使用而带来的错误.
第三章“Java和JavaScript”. 本章探讨了由Java和JavaScript带来的安全风险.
第四章“用ActiveX和插件下载机器代码”. 本章探讨了在计算机上运行随机代码所带来的严重危险.
第五章“个人隐私”. 本章探讨了在线隐私权, Cookie技术以及秘密泄露的问题.
第三部分:数字认证, 阐释了什么是数字认证, 以及如何通过使用数字认证来在Web上建立身份和信用.
第六章“数字认证技术”. 本章阐释了怎样用密码学来确认在联机环境中的身份.
第七章“认证机构和服务器证书”. 本章给出了对特定的各种用来建立Web服务器的身份的数字认证的实际观点.
第八章“客户端数字证书”. 本章讨论了用来在Web上建立身份的数字认证的正. 反两方面情况.
第九章“代码签名与Microsoft认证码”. 本章阐释了怎样用数字认证来签署可执行文件, 以及这些签名是怎样被确认的.
第四部分:密码学, 给出了密码学的一个整体说明, 并讨论了它是如何适应当今网络发展的. 这部分内容对于那些对Web出版和商业感兴趣的个人或组织是非常有用的.
第十章“密码学基础”. 本章讨论了加密及其消息摘要所扮演的角色.
第十一章“密码学和网络”. 本章讨论了密码在Internet加密方面所扮演的角色.
第十二章“理解SSL和TLS”. 本章介绍了安全套接字层以及传输层安全协议的概况.
第五部分:Web服务器安全, 研究了保障Web服务器安全的技术.
第十三章“主机和网站安全”. 本章包括有关UNIX系统和Windows NT(注2)的各方面的安全.
第十四章“控制对Web服务器的访问”. 本章讨论了怎样才能通过建立在Web服务器内部的访问控制系统, 来严格控制一个Web服务器提供给特定用户的信息.
第十五章“安全的CGI/API编程”. 本章讨论了在编写CGI脚本以及利用Web服务器的API时所面临的安全问题.
第六部分:商业贸易与社会交际. 本章探讨了Web上涉及金钱与社会的关键问题.
这部分内容是一般读者所感兴趣的.
第十六章“数字支付”. 本章探讨了在线支付的方式.
第十七章“审查软件和审核技术”. 本章介绍了控制利用Internet进行访问时所使用的技术.
第十八章“民事法律条款”. 本章探讨了在Web上发布信息所涉及的民事法规.
第十九章“刑事法律条款”. 本章探讨了Web内容导致的刑事问题. 本章是第十八章的继续.
第七部分:附录, 包括总结和技术信息.
附录一“来自于Vineyard. net的教训”. 本附录是一个有关建立及运营Internet服务提供商的个人报道, 报道中还包括有关尝试确保其安全性的问题.
附录二“建立和安装Web服务器认证”. 本附录展示了Apache-SSL Web服务器的安装, 以及认证过程和安装程序. 虽然本附录中的一些特殊技术信息可能在付梓印刷之前就已经过时, 但其中的示例说明程序还是当前使用中的Web服务器所遵从的.
附录三“SSL 3. 0协议”. 本附录说明了SSL 3. 0技术细节. 它包括建立一个SSL(安全套接字层)客户和服务器的简单表示以及有关SSLeay的信息.
附录四“PICS说明”. 本附录说明了有关PICS的技术细节.
附录五“参考资料”. 本附录是告诉你在哪里可以找到更多的信息, 其中包括电子资源和出版物资源. 我们尽力使本目录短小精悍.
预备知识
网络安全是一个复杂的话题. 它涉及到传统计算机安全. 计算机体系结构. 系统设计. 软件工程. Internet技术. 数学以及法律等方面的知识. 为了使这本书不至于太厚, 我们把重点放在了在别处不易找到的信息和技术上.
要想从本书中学到更多的知识, 你应当对一台已经联网的计算机的操作与管理比较熟悉, 知道怎样把你的计算机连接到Internet上, 知道怎样获取. 安装以及维护计算机软件, 并且知道怎样实现日常的系统管理任务, 例如备份. 你应当具有Web工作经验, 并且知道怎样安装以及维护组织的Web服务器.
但这并不是说本书是专门写给那些“探索者“或“安全狂人”们的. 其实, 我们花了很多精力来使这本书适用于那些对计算机和Web比较熟悉且有一定工作经验, 但又不熟悉计算机安全细节的人. 因此本书包括了有关密码学以及SSL的介绍性章节.
本书涉及的Web软件
编写有关网络安全方面的书籍的难处在于:该领域在以难以置信的速度变化和发展着. 在我们编写此书的过程中, Netscape就发行了三代Web服务器和浏览器. Microsoft也发行了新版本IE Web浏览器. WebTV Networks公司发行了一个机顶盒, 有了它人们可以在没有PC机时上网冲浪(最后, 这个盒子被Microsoft买了下来). 在那段时间当中, 至少已有三个“安全的”Web服务器发布了.
要跟踪网络安全领域的发展是极其困难的, 而用印刷出版物的方式来跟踪网络安全领域的发展更是不可能的. 所以我们不准备提供有关安装和配置特殊软件的技术细节(这些细节可能在本书出版发行时就已经过时了), 而是给出在未来许多年内都可能用到的. 比较通用的概念和技术.
在编写本书之际, 我们用到了大量的各种软件. 本书中用到的实例都来源于下列Web服务器.
Apache-SSL/Stronghold
Apache—SSL是一个可以加密的Web服务器, 它运行在各种各样的UNIX操作系统上. 人们可以从很多地方自由获取(虽然它的应用严格受地方法律的限制), 并用它支持军事级的128位加密. 由于Apache—SSL使用了各种各样的专利技术, 所以当它用做商业用途时, 必须经过授权. 由Community ConneXion公司出售的授权版本被称为Stronghold.
Microsoft IIS
IIS是Microsoft可加密的Web服务器. 它是与Windows NT服务器操作系统捆绑在一起的.
Netscape FastTrack Server
Netscape FastTrack Server是一个由Netscape公司生产的低成本. 可加密的Web服务器. 它有两种版本:一种是包括128位加密的美国版, 另一种是支持40位密钥加密的出口版.
WebStar Pro
WebStar Pro是一个能在Apple MacOS操作系统上运行的Web服务器. 它起初是基于流行的MacHTTP的Web服务器, 包括一个加密模块. 由Star Nine科技公司(Quarterdeck的分公司)出售.
WebSite Pro
WebSite Pro是一个可加密的Web服务器, 它在Windows 9x以及Windows NT/2000的操作系统上运行. 由O'Reilly & Associates公司销售.
本书中使用了下面的浏览器:
Netscape Navigator
Netscape公司的Navigator推动了Internet商业化.
Microsoft Internet Explorer
Microsoft的IE浏览器是一个可加密的Web浏览器. 与Microsoft的Windows 9x操作系统紧紧捆绑在一起.
Spry Real Mosaic
Spry的Real Mosaic Web浏览器是最初Mosaic浏览器的后续产品. 其他公司(包括Microsoft以及WebTV Networks)纷纷对这个浏览器引擎进行了授权.
为什么要编写本书呢?
1991年6月, O'Reilly & Associates公司出版了我们的第一本书——《Practical UNIX Security》. 这本书有450页, 内容包括保障Internet上的UNIX安全的. 代表了当时技术水平的信息. 五年后, 我们出版了这本书的修订版, 书名是《Practical UNIX & Internet Security》. 在随后这些年里, 由于计算机安全领域充分地发展起来了, 所以, 当你看见这本书的新版有1000页之多时, 不必感到惊奇.
一些人开玩笑说, 第二版书太厚了, 与其花这么多时间去读它, 还不如把它当做一件武器——当别人想要入侵你的计算机时, 你只要用这本3磅重的书朝他脑袋上猛击一下就可以了.
可能. 对真正的管理员而言, 一本1000页的有关运行安全的UNIX以及Internet服务器的书无疑是天赐之物. 但不幸的是, 这本书中的许多信息不适合那些小型网站的管理, 而且, 这本书还遗漏了一些很有用的关键问题——因为在这本书出版的这些年中技术也在发展. 此外, 我们1996年出版的书的重点在UNIX服务器上, 但
并不是每一个站点都使用UNIX, 并且也不是每个人都是系统管理员.
很明显, 对于一本书而言, 一方面, 它需要给时间紧迫的计算机用户及系统管理员一些“框架”知识, 告诉他们怎样安全地使用Web, 另一方面, 它也需要包括网络安全的最新发展:SSL加密. 客户端数字签名认证, 以及其他适应电子商务发展的特殊问题. 于是就有了这本书.