开发人员的网络安全-真实威胁,实际防御

开发人员的网络安全

真实威胁,实际防御

 马尔科姆·麦克唐纳 Malcolm McDonald)

 

 

介绍

 

网络是一个疯狂的地方。很容易得到这样的印象,互联网是由专家精心设计的,并且一切都有很好的理由。实际上,互联网的发展是迅速而随意的,我们今天在网络上所做的事情远远超出了原始发明者的想象。

结果,保护网站安全似乎是一项艰巨的任务。网站是一种独特的软件,发布后立即可为数百万用户使用,其中包括活跃而积极的黑客社区。大公司通常会遇到安全故障,每周都会公布新的数据泄露事件。面对这种情况,一个孤独的Web开发人员应该如何保护自己?

关于这本书

Web安全的一个大秘密是,Web漏洞的数量实际上很小-巧合的是,大约可以容纳在一本书中的大小-并且这些漏洞每年之间并没有太大变化。这本书将教给您您需要了解的每一个关键威胁,并且我将分解您为捍卫网站而应采取的实际步骤。

谁应该读这本书

如果您是刚刚开始职业生涯的Web开发人员,那么这本书是互联网安全的理想搭便车指南。无论您刚刚获得计算机科学资格,刚从新手训练营还是自学成才,我都建议您阅读本书的封面。本书中的所有内容都是必不可少的知识,并且通过最清晰的示例以最直接的方式进行解释。现在就为即将面临的威胁做好充分的准备将为您省去很多麻烦。

如果您是一位更有经验的程序员,那么这本书也将非常有用。精通安全知识可以使您始终受益,因此,使用本书可以弥补您可能遇到的任何不足。像参考书一样对待它,并深入研究似乎有趣的章节。您并不总是知道您不知道的事!像您一样经验丰富的程序员有责任以身作则,带领团队,对于Web 开发人员,这意味着遵循安全性最佳实践。

您会注意到,本书并不特定于任何特定的编程语言(尽管我会根据需要为主要语言提供各种安全建议)。无论您选择使用哪种语言编程,对Web安全性都有深刻的了解将使您受益。许多程序员在其职业生涯中会使用多种语言,因此学习Web安全性的原理比学习Web安全性的原理要好得多。过于关注单个库。

互联网简史

在我介绍本书的内容之前,回顾一下互联网如何达到当前状态将非常有用。许多聪明的工程师为Internet的爆炸性增长做出了贡献,但是与大多数软件项目一样,在添加功能时,安全考虑通常会退居二线。了解安全漏洞的蔓延方式将为您提供学习修补程序时所需的上下文。

万维网是蒂姆·伯纳斯·李(Tim Berners-Lee)在欧洲核研究组织(CERN)工作时发明的。在欧洲核子研究中心进行的研究包括将亚原子颗粒粉碎在一起,希望它们能分裂成较小的亚原子颗粒,从而揭示宇宙的基本结构,但前提是这种研究可能会在地球上产生黑洞。

显然,伯纳斯·李(Berners-Lee)对终结宇宙没有兴趣,他花了很多时间在欧洲核子研究中心(CERN)发明了互联网,这是我们今天所知道的,这是一种在大学之间共享有关其发现的数据的方法。他创建了第一个Web浏览器和第一个Web服务器,并发明了超文本标记语言(HTML)和超文本传输​​协议(HTTP)。世界上第一个网站于1993年上线。

早期的网页只有文字。Mosaic是第一个能够显示嵌入式图像的浏览器,它是在国家超级计算应用程序中心创建的。Mosaic的创建者最终加入了Netscape Communications,在那里他们帮助创建了第一个被广泛使用的网络浏览器Netscape Navigator。在早期的网络中,大多数页面都是静态的,流量的传输未经加密。更简单的时间!

浏览器中的脚本

到1995年,最近聘用Netscape Communications的Brendan Eich花了10天的时间发明了JavaScript,这是第一种能够嵌入网页的语言。在开发过程中,该语言称为Mocha,然后重命名为LiveScript,然后再次重命名为JavaScript,最终被正式命名为ECMAScript。没有人喜欢ECMAScript这个名字,尤其是在Eich身上,他声称这听起来像是一种皮肤病。因此,除了最正式的设置外,每个人都继续将其称为JavaScript。

JavaScript的原始化身结合了(否则不相关的)Java编程语言的笨拙命名约定,C的结构化编程语法,模糊的基于原型的Self继承以及Eich自己的噩梦式类型转换逻辑设计。不管是好是坏,JavaScript成为了网络浏览器的事实语言。突然,网页是交互式的事物,并且出现了一整类安全漏洞。黑客找到了使用跨站点脚本攻击将JavaScript代码注入页面的方法,互联网变得更加危险。

新的挑战者进入竞技场

Netscape Navigator的第一个真正竞争对手是Microsoft的Internet Explorer。Internet Explorer具有两个竞争优势-它是免费的,并且预先安装在Microsoft Windows上。浏览器迅速成为world’的最流行的浏览器,而浏览器图标成为€œthe互联网按钮a€ ?让一代人学习如何浏览网络。

微软试图“拥有” ?网络使它向浏览器引入了ActiveX等专有技术。不幸的是,这导致了一个上扬的恶意软件 €”恶意软件感染users’机。Windows是(现在仍然是)计算机病毒的主要攻击目标,互联网被证明是一种有效的传输机制。

直到Mozilla的Firefox,然后是由年轻的新兴搜索初创公司Google创建的时髦的新浏览器Chrome推出,Internet Explorer的统治地位不会受到很多年的挑战。这些更新的浏览器加快了Internet标准的增长和创新。但是,到现在,黑客正成为一种可盈利的业务,任何安全漏洞一被发现就被利用。保护浏览器安全已成为供应商的重中之重,网站所有者如果想保护用户,就必须紧跟最新的安全新闻。

编写HTML的机器

Web服务器的发展与浏览器技术发展迅速。在互联网的第一天,托管网站是学者们实践的一种小众爱好。大多数大学都运行开源操作系统Linux。在1993年,Linux社区实现了通用网关接口(CGI),使网站管理员 可以轻松创建由相互链接的静态HTML页面组成的网站。

更有趣的是,CGI允许通过脚本语言(如Perl或PHP)生成HTML,因此网站所有者可以根据存储在数据库中的内容动态创建页面。PHP最初代表个人主页,当时的梦想是每个人都可以运行自己的Web服务器,而不是将所有个人信息上传到具有可疑数据隐私政策的社交媒体巨头。

PHP普及了模板文件的概念:带有嵌入式处理标签的HTML,可以通过PHP运行时引擎进行馈送。动态PHP网站(例如Facebook的最早版本)在互联网上蓬勃发展。但是,动态服务器代码引入了全新的安全漏洞类别。黑客找到了新颖的方法,可以通过注入攻击在服务器上运行自己的恶意代码,或者通过目录遍历来探索服务器的文件系统。

一系列的管

的网络技术手段的不断再创造,许多today’的互联网是由供电什么我们会考虑€œold†?技术。软件趋于到达一个点,它的作品足够有用,然后落入“ 维护â€?模式,仅在绝对必要时才进行更改。对于需要24/7全天候在线的Web服务器,尤其如此。黑客会在网络上扫描运行较旧技术的易受攻击的站点,因为它们经常会出现安全漏洞。我们仍在解决十年前首次发现的安全问题,这就是为什么我在本书中描述了可能影响网站的每个主要安全漏洞的原因。

同时,互联网继续以前所未有的速度增长!汽车,门铃,冰箱,电灯泡和猫砂盘等支持互联网的日常设备的趋势为攻击提供了新的载体。设备连接到物联网的过程越简单,具有自动更新安全功能的可能性就越小。这引入了大量不安全的Internet节点,这些节点为botnet提供了丰富的托管环境,而botnet是可以由黑客远程安装和控制的恶意软件代理。如果攻击者瞄准了您的站点,这将给他们带来很多潜在的火力。

有什么可担心关于第一

网站开发人员可能会因适当保护网站的困难而灰心。但是,您应该抱有希望:一群安全研究人员勇敢地发现,记录和修复安全漏洞。保护站点安全所需的工具可免费获得,并且通常易于使用。

了解最常见的安全漏洞,并知道如何将其插入,将保护您的系统免受99%的攻击。总是会有一些技术上极强的对手来破坏您的系统,但是除非您正在运行伊朗核反应堆或美国进行政治运动,否则这种想法不应使您彻夜难眠。

本书中的内容

全书分为两部分。第一部分介绍了互联网的工作原理。第二部分深入研究了需要防御的特定漏洞。内容如下:

第1章:让我们入侵网站

在本介绍性章节中,您将了解黑客入侵网站有多么容易。提示:这真的很容易,所以您买这本书做得很好。

第2章:Internet的工作方式

“管” ?Internet的一部分基于Internet协议运行,Internet协议是一系列网络技术,可让世界各地的计算机无缝通信。您将查看TCP,IP地址,域名和HTTP,并查看如何在网络上安全地传递数据。

第三章:浏览器的工作方式

用户通过浏览器与您的网站进行交互,并且那里显示出许多安全漏洞。您将学习浏览器如何呈现网页,以及如何在浏览器安全模型中执行JavaScript代码。

第4章:Web服务器如何工作

您将为网站编写的大多数代码都将在Web服务器环境中运行。Web服务器是黑客的主要目标。本章介绍它们如何提供静态内容,以及如何使用动态内容(如模板)来合并数据库和其他系统中的数据。您还将学习用于Web编程的一些主要编程语言,并回顾每种语言的安全性注意事项。

第5章:程序员的工作方式

本章介绍如何编写网站代码以及如何养成良好的习惯,以减少错误和安全漏洞的风险。

第6章注入攻击

我们将通过查看您将遇到的最讨厌的威胁之一来开始对网站漏洞的调查:黑客注入代码并在您的服务器上执行代码。当您的代码与SQL数据库或操作系统对接时,通常会发生这种情况。否则攻击可能包含注入Web服务器进程本身的远程代码。您还将看到文件上传功能如何使黑客注入恶意脚本。

第7章:跨站点脚本攻击

本章回顾了用于将恶意JavaScript代码走私到浏览器环境中的攻击,以及如何防范这些攻击。跨站点脚本编写有三种不同的方法(存储的,反射的和基于DOM的),您将学习如何防止每种方法。

第8章:跨站点请求伪造攻击

您将看到黑客如何使用伪造攻击来诱骗用户执行不良行为。这是互联网上的常见问题,您需要相应地保护用户。

第9章:破坏身份验证

如果用户注册了您的网站,则必须安全地对待其帐户。您将查看黑客用来规避登录屏幕的各种方法,从蛮力猜测密码到用户枚举。您还将查看如何将用户凭据安全地存储在数据库中。

第10章:会话劫持

您将看到用户 登录如何对他们的帐户进行劫持。您将学习如何构建您的网站并安全地处理Cookie,以减轻这种风险。

第11章:权限

了解如何防止恶意行为者使用特权升级来访问网站的禁止区域。特别是,如果您在URL中引用文件,黑客将尝试使用目录遍历来探索您的文件系统。

第十二章:信息泄漏

您很可能会通过泄漏信息来在网站中宣传漏洞。本章告诉您如何立即停止该操作。

第十三章:加密

本章介绍如何正确使用加密,并解释为什么加密在互联网上很重要。为一些简单的数学做好准备。

第十四章:第三方代码

您将学习如何使用其他人的代码来管理漏洞。您运行的大多数代码将由其他人编写,并且您应该知道如何保护它!

第15章:XML攻击

您的Web服务器可能会解析XML,并且可能容易受到本章所述攻击的攻击。在过去的几十年中,XML攻击一直是黑客中持续流行的攻击媒介,所以请当心!

第16章:不要成为附件

如本章所述,您可能无意间充当了对他人进行黑客攻击的辅助手段。通过确保您消除了这些安全漏洞,可以成为一名优秀的互联网公民。

第17章:拒绝服务攻击

在本章中,我将向您展示如何将大量网络流量作为拒绝服务攻击的一部分使您的网站脱机。

第18章总结

上一章是一个备忘单,它回顾了您在整本书中学到的安全性的关键要素,并概述了在注重安全性时应该应用的高级原则。每天晚上睡觉之前,请认真学习并背诵课程。

猜你喜欢

转载自blog.csdn.net/allway2/article/details/108327830