前言Foreword 在我看来,世界最核心的东西无外乎物质、能量与信息。 輮木以为轮,磨铜以成镜,现代数控机床加工乃至光刻技术,这是物理变化。从炼汞烧铅妄图长生,到发明元素周期表,深入研究物质之变化,再到合成各种工业材料,这是化学变化。借助离子对撞机,创造新元素乃至发现新的基本粒子,人类深入物质的本质。 人类没有大力,所以驱使牛马。牛马力有穷尽,所以善用水、风等自然之力。水、风等自然之力无常,所以发明了蒸汽机、内燃机。煤炭、汽油运输不便,所以开发出电这种便捷能源,区区一根铜线就可以传输巨额能量。物质的研究最终给人类带来了与太阳同源的核能。至此,人类对能量的认识和利用已经达到相当高的程度。 人类的智慧传输,最早靠肢体和语言,而后发明文字,信息可传至万年以后。古时用烽烟、驿站,抑或鸿雁传书,这是古人传递信息的方式。后有电报、电话,直到计算机、互联网的发明,信息传递速度已超乎想象。人类因此而步入信息时代。 而今,信息技术已然成为第一生产力,信息的安全却被忽视了。就如人盖屋,先求遮风挡雨,后考虑防火防盗。这是事物发展的必然规律。现今已经到了不得不重视信息安全的时候了。 2015年,网络空间安全升级为一级学科,全国布控。然而,该学科师资短缺、教材稀缺,给课程建设和教学开展带来了不少困难。 此时,编者所教授的“Web开发与安全”课程,难觅教材。 学生一来不懂Web开发,二来不懂Web安全,所以合二者内容于本书之中。 本书在组织上,先介绍Web开发,再介绍相关Web安全,Web开发中又渗透着Web攻击技术。 对于培养Web开发人员而言,本书涉及了前端的HTML、CSS、JavaScript技术,有别于深入开发的书籍,在后端内容部分涉及了3种后端技术,包括PHP、JSP和Python,既讲述语言层面的漏洞,又讲述框架(如ThinkPHP、Flask、Struts)的漏洞。 那么,为什么要涉及这么多的内容呢? 这与网络安全从业人员的知识结构有关。作为网络安全从业人员,可能无须对开发非常精深,但什么东西都要略懂。开发人员或许用十几年熟悉一门开发技术即可胜任自己的工作,但网络安全人员面对的渗透测试任务可能涉及各种语言、各种框架,这不是由自己决定的。不能说我就是一个Struts框架的渗透人员,就不能渗透ThinkPHP。因此,本书弃其深,取其精,求其广。 对于培养Web安全人员而言,本书多了Web开发的内容。因为如果不懂这些基础,渗透也就无从谈及。 在我看来,对网络安全从业人员的素养要求要远超对开发人员的素养要求。开发人员懂得基本原理和实际用法即可驾驭一种语言或一个框架,而网络安全从业人员却要从寻常之中发觉漏洞。因此,本书先讲开发,再讲安全,次第而行。 文中涉及语言层面漏洞,以及SQL注入、XSS、CSRF、SSRF漏洞和典型框架漏洞。 网络空间安全专业的Web课程可以此为凭借。 有兴趣的读者也可以自行购书学习。 书中案例简洁而平实,读者在学习时要逐一验证体会。理解任何理论的最佳方法无外乎落实于实际行动。同时,欢迎读者订阅本书微信公众号“Web开发与安全”,以便获得更多资料。 编者编写本书,一是为顺应趋势,二是希望有助于网络空间安全学科的发展,三是方便自己教学使用。如有谬误之处,还请诸位同仁不吝赐教。 编者2022年3月