【网络安全】学习Web安全必须知道的一本书

【文末送书】今天推荐一本网络安全领域优质书籍。

目录

    • 正文
    • 实战案例1:使用Docker搭建LAMP环境
    • 实战案例2:使用Docker搭建LAMP环境
    • 文末送书

正文

学习Web安全离不开Web,那么,需要先来学习网站的搭建。搭建网站是每一个Web安全学习者的必经之路。因为,Web安全研究的主体就是网站。这一点包括了以下几个方面。

(1)研究不同的网站环境是否存在漏洞

这又包括了以下三个方面。

1)研究网站搭建使用的相关软件、中间件、数据库、其他服务是否存在通用的漏洞。

2)研究网站在运维阶段所下发和修改的配置是否会引起新的漏洞。

3)研究网站所在环境中的边界安全是否具有抵御攻击的能力,包括在网络环境中部署网络安全防护设备及监控设备,在主机层面加装安全产品和监控软件。部署哪些防护和监控产品,如何整体架构,这是每一个企业的安全管理者需要学习的一个课题。

(2)研究不同的网站实现的代码是否存在漏洞

网站代码在开发过程中是否存在一些通用的编码缺陷?如果存在,可能会造成SQL注入漏洞、XSS漏洞等。除此以外,在部分功能的设计上,是否存在逻辑漏洞?该内容会在逻辑漏洞章节中详细讨论。

(3)研究网站的用户访问网站过程中是否会受攻击

而这一点是研究网站的用户,研究主体看似不再是网站,而是人,但实际上还是围绕网站来展开的。人都会有弱点,比如众所周知的弱口令问题,就是来源于人性的惰性。还有,关于人眼视觉上的欺骗,这一点会在ClickJacking漏洞一节中为大家呈现。
以上三点的研究共同构成了Web安全研究的主要内容,它们都统一于“建设更安全的互联网,保护网站经营者以及网民合法利益不受侵犯”这一中心思想的内涵之上。
既然网站对于Web安全如此之重要,所以很有必要学习一个网站的搭建。接下来就以LAMP为例来进行网站搭建的介绍。

LAMP是指“Linux+Apache+MySQL+PHP”。这是过去比较经典的网络架构,即把Apache、MySQL以及PHP安装在Linux系统上,组成一个环境来运行PHP的脚本语言所解释的一个网站服务。PHP、ASP、JSP三者是早期网站流行架构中最常用的脚本语言,在这之前还有C/C++、VBScript等。在Web技术飞速发展的今天也产生了很多新的脚本语言,如:NodeJS、Python、Lua、Ruby、GoLang等,LAMP技术使用的是PHP语言。Apache是最常用的开源Web服务软件之一。MySQL是较为流行的数据库软件,早期开源目前已被Oracle收购。

LAMP的整体架构如图1所示。

在这里插入图片描述
可以使用Docker(其Logo如图2所示)来快速构建一个LAMP架构的Web环境。本文相关的实验大部分来自于Vulhub平台。由于Vulhub平台是基于Docker的,所以需要先来学习和了解一下如何使用Docker快速搭建实验环境。

Docker是一个开源的应用容器引擎,基于Go语言,并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的App),更重要的是容器性能开销极低。
安装好Docker以后,可以使用“docker -v”查看版本,如果能够成功打印出Docker版本信息,说明安装成功。

实战案例1:使用Docker搭建LAMP环境

难度系数:★
LAMP可以快速搭建起一个测试网站。如果不使用Docker构建,就需要分别安装这些软件,并且还需要配置它们,过程非常枯燥且容易出错(不过笔者这里还是建议大家在学习完本书内容以后,尝试不使用Docker或XAMPP等集成化平台,自己手动搭建LAMP,在解决错误中不断学习和提高)。
Docker 本身是不能直接用来提供测试环境的,书中大部分的实验环境放在容器里,所以需要先拉取镜像。先使用“docker pull 镜像名称”命令,如果不清楚镜像名称,可以使用“docker search 关键词”进行检索。
在命令行直接输入以下命令。

docker pull linode/lamp

该命令的作用是在Docker中直接拉取一个现成的LAMP镜像,如图3所示。

在这里插入图片描述
如果搭建下载出现时间缓慢的情况,可以参照网上的方法切换Docker镜像源。等待一段时间后,拉取完成了。开始执行下面的命令。

docker run -it -p 8001:80 linode/lamp /bin/bash

以linode/lamp镜像创建容器实例并且将容器的80端口映射到本机的8001端口(或其他任何未被占用的端口)。执行成功后,已经进入Docker容器中。
分别执行“service apache2 start”和“service mysql start”命令启动服务,如图所示。

在这里插入图片描述
打开浏览器,访问 http://127.0.0.1:8001(127.0.0.1 和localhost都代指本机),如图所示。

在这里插入图片描述

实战案例2:使用Docker搭建LAMP环境

难度系数:★
Docker Compose 是用于定义和运行多容器应用程序的工具。通过Docker Compose,可以使用YAML文件来配置应用程序需要的所有服务。然后,使用一个命令就可以从YAML文件配置中创建并启动所有服务。
Docker Compose 使用的三个步骤如下。
1)使用Dockerfile 定义应用程序的环境。
2)使用docker-compose.yml定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
3)最后,执行“docker-compose up”命令来启动并运行整个应用程序。
macOS和Windows的Docker已经包括了Docker Compose和其他Docker应用程序,不需要再次安装。对于Linux 系统,可以使用下面的命令来安装Docker Compose。

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/ docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

使用“docker-compose -v”命令进行验证,如果显示出docker-compose版本号,说明安装成功了。
使用Docker Compose搭建实验环境十分简单,在后续大部分的实验中,只给出实验环境的docker-compose.yml文件,而大家只需要新建文件夹,然后将docker-compose.yml文件放在该目录中,进入该目录执行“docker-compose up -d”命令即可构建并启动实验环境。“-d”参数表示后台运行,可根据需要填写。
下面用Docker Compose 搭建一个漏洞的实验环境,相关环境请读者参考本书配套的电子资源。这是一个Apache Flink上传目录穿越漏洞(CVE-2020-17518),该实验环境来自于Vulhub,该漏洞的原理会在后续章节进行介绍。以下是搭建漏洞环境的docker-compose.yml文件。

version: '2'
services:flink:image: vulhub/flink:1.11.2command: jobmanagerports:- "8081:8081"- "6123:6123"

文件保存好以后,进入所在目录,执行“docker-compose up -d”命令后,可以看到Docker在拉取镜像文件,如图所示。

在这里插入图片描述
需要等待一段时间,当出现“OK”字样时,说明已经下载好了。
由于将容器内的端口已经映射到了本机,通过阅读YAML文件,映射的是8081和6123两个端口。其中8081端口为Web服务,可以在浏览器访问http://127.0.0.1:8081,如果看到图所示页面,说明实验环境已经搭建成功了。

在这里插入图片描述
以上内容截取自《Web漏洞解析与攻防实战》

作者:王放 龚潇 王子航 等

在这里插入图片描述
由信息安全领域专家团队编写的《Web漏洞解析御与攻防实战》以漏洞为小节,每一种漏洞类型就是一个独立的单元。每一个单元都包含漏洞的原理、漏洞背后的技术细节、漏洞利用技术、攻防对抗技术、漏洞防御和实战练习等内容。
整体划分上,参考漏洞出现的时间顺序,这样的分类顺序主要是依据漏洞出现的时间点来区分的。

传统后端漏洞:出现时间大致在1998~2008年;

前端漏洞:出现时间在2005~2015年;

新后端漏洞:出现时间在2014年以后至今(2022年12月);

逻辑漏洞:与前三种漏洞类型均不同,它是一类独特的与业务逻辑紧密相关的漏洞,故将其独立划分出来。
本书整体上是根据漏洞出现的时间线来划分的。这是因为漏洞是攻防较量的核心所在,漏洞攻击技术是随着时间不断演化升级的,这样的时间顺序,由浅入深,可以让读者在学习和理解这些漏洞时循序渐进。

作者认为,传统后端漏洞的代表是SQL注入漏洞;前端漏洞的代表是XSS漏洞;新后端漏洞的代表是反序列化漏洞,尤其是Java反序列化漏洞。因此,这三类漏洞在每一章的开篇部分进行介绍,并且篇幅要比其他漏洞更多一些。读者可以将其作为重点内容进行学习和理解,这三类漏洞也是当今Web安全爱好者入门必知必会的漏洞。

文末送书

本次活动赠书一本,参与方式:三连文章,评论区随机抽取中奖粉丝;公布方式及日期:2023.12.27于私信及评论区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/239088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么SSL证书是必备之物?

SSL证书的首要任务是保障用户和网站之间的数据传输安全。未加密的数据传输容易受到中间人攻击,使敏感信息暴露于风险之中。SSL通过加密数据,有效地抵御了这些潜在的威胁,确保用户的隐私得到充分保护。 采用SSL证书的网站在浏览器地址栏中通常…

如何进行USB丢弃攻击?

USB丢弃攻击,类似于一场表演艺术,您需要构建一个引人入胜的故事,激发目标的好奇心,让他们忽略基本的安全意识,插入您精心准备的USB设备! 本文章仅限娱乐,请勿模仿或进行违法活动! 一、选择放置…

Java版企业电子招投标系统源代码,支持二次开发,采用Spring cloud微服务架构

招投标管理系统是一个集门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理于一体的综合性应用平台。它适用于招标代理、政府采购、企业采购和工程交易等业务的企业,旨在提高项目管理的效率和质量。该系…

Http---HTTP响应报文

1. HTTP响应报文分析 HTTP 响应报文效果图: 响应报文说明: --- 响应行/状态行 --- HTTP/1.1 200 OK # HTTP协议版本 状态码 状态描述 --- 响应头 --- Server: Tengine # 服务器名称 Content-Type: text/html; charsetUTF-8 # 内容类型 Transfer-Encoding: chunked # 发送给客…

【Qt之Quick模块】5. QML基本类型及示例用法

QML格式 QML基本类型 在 QML 中,有以下基本类型: int:整数类型。 Rectangle {function myFunction() {// 输出 debug 信息console.log("11 " (11));}Component.onCompleted: {myFunction();} }结果: 2. real&…

FreeRTOS之队列集操作(实践)

多个任务在在同一队列中传递的同一种数据类型,而队列集能够在任务之间传递不同的数据类型。 配置流程:(更详细流程参考正点原子的教程) 1、启用队列集将configUSE_QUEUE_SETA置1) 2、创建队列集 3、创建队列或信号…

SpringBoot对接支付宝完成扫码支付

文章目录 1、支付方式选择2、交互流程3、对接准备1)加密解密 签名验签2)沙箱环境3)内网穿透 4、二维码5、下单6、异步通知回调7、查询支付结果8、退款9、通用版SDK 需求:系统A对接支付宝,实现支持用户扫码支付 1、支…

成为一名FPGA工程师:面试题与经验分享

在现代科技领域,随着数字电子技术的迅猛发展,FPGA(可编程逻辑器件)工程师成为了备受瞩目的职业之一。FPGA工程师不仅需要掌握硬件设计的基本原理,还需要具备良好的编程能力和解决问题的实践经验。面对如此竞争激烈的行…

语音识别之百度语音试用和OpenAiGPT开源Whisper使用

0.前言: 本文作者亲自使用了百度云语音识别,腾讯云,java的SpeechRecognition语言识别包 和OpenAI近期免费开源的语言识别Whisper(真香警告)介绍了常见的语言识别实现原理 1.NLP 自然语言处理(人类语言处理) 你好不同人说出来是不同的信号表示 单位k 16k16000个数字表示 1秒160…

C语言中关于操作符的理解

本篇文章只会列出大家在生活中经常使用的操作符 算术操作符 在算数操作符中常用的有&#xff0c;&#xff0c;-&#xff0c;*&#xff0c;/&#xff0c;% &#xff0c;我们重点讲一讲 / (除) 和 % (模) " / "运算 #include <stdio.h>int main() {int a5/2;fl…

探讨APP自动化测试工具的重要性

随着移动应用市场的蓬勃发展&#xff0c;企业对于保证其移动应用质量和用户体验的需求日益迫切。在这一背景下&#xff0c;APP自动化测试工具正变得越来越重要&#xff0c;成为企业成功的关键组成部分。本文将探讨APP自动化测试工具对企业的重要性&#xff0c;并为您解析其在提…

Spring中你一定要知道的@PostConstruct/@PreDestroy

文章目录 功能源码解析执行 功能 Spring中存在很多回调&#xff0c;但是执行他们的时机都不相同&#xff0c;也许大家用的最多的是InitializingBean.afterPropertiesSet&#xff0c;这个方法的作用如名称一样&#xff0c;是bean初始化后执行的一个回调操作&#xff0c;而PostC…

nodejs+vue+ElementUi家政服务系统c90g5

项目中登录模块用到token家政服务平台有管理员&#xff0c;雇主&#xff0c;雇员三个角色。管理员功能有个人中心&#xff0c;雇主管理&#xff0c;雇员管理&#xff0c;资料认证管理&#xff0c;项目类型管理&#xff0c;服务项目管理&#xff0c;需求信息管理&#xff0c;服务…

C# WPF上位机开发(软件的发布和部署)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 软件编译完成之后&#xff0c;本地测试完之后&#xff0c;一般都要发布和部署到客户的电脑上面。客户电脑的配置未必和开发的电脑是一样的&#xf…

mysql 23day DDL常用约束,数据类型

目录 数据库的四种语言常用约束&#xff08;DDL&#xff09;创建格式PRIMARY KEY&#xff1a;主键约束FOREIGN KEY&#xff1a;外键约束主键外键 联合测试开始测试 NOT NULL&#xff1a;非空约束UNIQUE&#xff1a;唯一约束DEFAULT&#xff1a;默认值约束zerofill 零填充auto_i…

自制数据库空洞率清理工具-C版-01-EasyClean-V1.0(支持南大通用数据库Gbase8a)

目录 一、环境信息 二、简述 三、支持功能 四、空洞率 五、工具流程图 六、安装包下载地址 七、参数介绍 1、命令模板 2、命令样例 3、参数表格 八、安装步骤 1、配置环境变量 2、生效环境变量 3、检验动态链接是否正常 九、运行效果 一、环境信息 名称值CPUInt…

Windows电脑向ipad和iOS系统共享文件夹

Windows电脑向ipad和iOS系统共享文件夹 这个方案不需要下载任何软件&#xff0c;但是要求 iOS 和 Windows 在同一个局域网内。再大的文件都可以在 iOS13 自带的的“文件App”里实时显示&#xff0c;可以直接打开。这个解决方案需要你 Windows 电脑上登陆了微软账号&#xff0c…

原生JavaScript实现 元素全屏与退出全屏效果

之前写过 前端screenfull实现界面全屏展示功能 突然发现自己犯傻了 其实元素js中就有全屏与取消全屏的方式 html代码如下 <!DOCTYPE html> <html> <head><title>全屏实验</title><style></style> </head> <body><d…

数据结构考试测试编程题

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

flutter开发实战-第一帧布局完成回调实现

flutter开发实战-第一帧布局完成回调实现 在开发中&#xff0c;我们有时候需要在第一帧布局完成后调用一些相关的方法。这里记录一下是实现过程。 Flutter中有多种不同的Binding&#xff0c;每种Binding都负责不同的功能。下面是Flutter中常见的Binding&#xff1a; 这里简单…