【网络安全】学习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于私信及评论区。
相关文章:
【网络安全】学习Web安全必须知道的一本书
【文末送书】今天推荐一本网络安全领域优质书籍。 目录 正文实战案例1:使用Docker搭建LAMP环境实战案例2:使用Docker搭建LAMP环境文末送书 正文 学习Web安全离不开Web,那么,需要先来学习网站的搭建。搭建网站是每一个Web安全学习…...
千帆 AppBuilder 初体验,不仅解决解决了我筛选简历的痛苦,更是让提效10倍!
文章目录 🌟 前言🌟 什么是百度智能云千帆 AppBuilder🌟 百度智能云千帆 AppBuilder 初体验🌟 利用千帆AppBuilder搭建简历小助手🌟 让人眼前一亮的神兵利器 - 超级助理 🌟 前言 前两天朋友 三掌柜 去北京…...
Ubuntu 常用命令之 cal 命令用法介绍
📑Linux/Ubuntu 常用命令归类整理 cal命令在Ubuntu系统下用于显示日历。它可以显示任何特定月份或整个年份的日历。 cal命令的参数如下 -1:只显示当前月份的日历。-3:显示前一个月、当前月和下一个月的日历。-s:指定日历的开始…...
项目中webpack优化配置(1)
项目中webpack优化配置 一. 开发效率, 体验 1. DLL(开发过程中减少构建时间和增加应用程序的性能) 使用 DllPlugin 进行分包,使用 DllReferencePlugin(索引链接) 对 manifest.json 引用,让一些基本不会改动的代码先…...
【Qt之Quick模块】5. QML基本类型及示例用法
QML格式 QML基本类型 在 QML 中,有以下基本类型: int:整数类型。 Rectangle {function myFunction() {// 输出 debug 信息console.log("11 " (11));}Component.onCompleted: {myFunction();} }结果: 2. real&…...
MySQL运维实战(1.2)安装部署:使用二进制安装部署
作者:俊达 引言 上一篇我们使用了RPM进行安装部署,这是一种安装快速、简化部署和管理过程、与操作系统提供的包管理工具紧密集成的部署方法。此外,当你需要更高的灵活性和自定义性,并且愿意承担一些额外的手动配置和管理工作&am…...
ChatGPT一周年:开源语言大模型的冲击
自2022年末发布后,ChatGPT给人工智能的研究和商业领域带来了巨大变革。通过有监督微调和人类反馈的强化学习,模型可以回答人类问题,并在广泛的任务范围内遵循指令。在获得这一成功之后,人们对LLM的兴趣不断增加,新的LL…...
C++ Qt开发:Charts绘图组件概述
Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QCharts二维绘图组件的常用方法及灵活运用。 …...
基于Java+SpringBoot实现人脸识别搜索
基于JavaSpringBoot实现人脸识别搜索 引言 背景介绍 结合人脸识别技术,在工厂、学校、商场、餐厅等人流密集的场所进行监控,对人流进行自动统计、识别和追踪,同时标记存在安全隐患的行为及区域,并发出告警提醒,加强…...
【论文阅读】FreeU: Free Lunch in Diffusion U-Net
FreeU: 无需训练直接提升扩散模型生成效果。 paper:https://arxiv.org/abs/2309.11497 code:GitHub - ChenyangSi/FreeU: FreeU: Free Lunch in Diffusion U-Net 1. 介绍 贡献: •研究并揭示了U-Net架构在扩散模型中去噪的潜力࿰…...
TypeScript实战——ChatGPT前端自适应手机端,PC端
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 可以在线体验哦:体验地址 文章目录 前言引言先看效果PC端手机端 实现原理解释 包的架构目录 引言 ChatGPT是由OpenAI开发的一种基于语言模型的对话系统。它是GPT(…...
自定义ORM(mybatis)源码(六)-类型处理器
自定义ORM(mybatis)源码(六)-类型处理器 模仿mybatis 用于处理 sql 设置参数类型和 执行 sql 后响应字段的类型处理 TypeHandler public interface TypeHandler<T> {/*** sql 设置参数值* param pstmt* param i* param value* throws SQLException*/void setParamete…...
Linux shell编程学习笔记37:readarray命令和mapfile命令
目录 0 前言1 readarray命令的格式和功能 1.1 命令格式1.2 命令功能1.3 注意事项2 命令应用实例 2.1 从标准输入读取数据时不指定数组名,则数据会保存到MAPFILE数组中2.2 从标准输入读取数据并存储到指定的数组2.3 使用 -O 选项指定起始下标2.4 用-n指定有效行数…...
GDB:强大的GNU调试器
GDB,全称为GNU Debugger,是一款广泛使用的源代码级调试工具。它支持多种编程语言,包括C、C、Fortran、Objective-C、Python、Ada和Go等。GDB能够帮助开发者在开发过程中定位和修复程序中的错误,通过设置断点、查看变量值、单步执行…...
综述 2022-Egyptian Informatics Journal:电子健康记录的安全和隐私
Keshta, Ismail, and Ammar Odeh. "Security and privacy of electronic health records: Concerns and challenges." Egyptian Informatics Journal 22.2 (2021): 177-183. https://doi.org/10.1016/j.eij.2020.07.003 被引次数:207 IF 5.2 / JCR Q2...
PHP数组定义和输出
数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。 PHP中的数组与Java的数组不一样,需要有key(键)和value(值),相当于Java中数组和键值对的结合。 数组的定义 …...
MySQL中已经有了Binlog,为啥还要有Redo Log
参考文章 MySQL中的Binlog和Redo Log虽然都与事务的持久性和可恢复性有关,但它们服务于不同的目的和场景,并且在MySQL的架构中扮演着互补的角色。 Redo Log: 目的:Redo Log 主要用于保证InnoDB存储引擎的事务持久性。它确保在系…...
Java数据结构-模拟ArrayList集合思想,手写底层源码(1),底层数据结构是数组,编写add添加方法,正序打印和倒叙打印
package com.atguigu.structure; public class Demo02_arrayList {public static void main(String[] args) {MyGenericArrayListV1 arrayListV1 new MyGenericArrayListV1();//arr.add(element:100,index:1);下标越界,无法插入//初始化(第一次添加&…...
MyBatis-Plus如何 关闭SQL日志打印
前段时间公司的同事都过来问我,hua哥公司的项目出问题了,关闭不了打印sql日记,项目用宝塔自己部署的,磁盘满了才发现大量的打印sql日记,他们百度过都按照网上的配置修改过不起作用,而且在调试时候也及为不方…...
单元测试框架jUnit
JUnit(Java单元测试框架)是用于在Java应用程序中执行单元测试的框架。它是一个开源框架,广泛用于Java开发中。以下是一些关于JUnit的常见问题以及相应的汉语回答: 1. **什么是JUnit?** - JUnit是一个用于编写和运行…...
微软 Visual Studio 迎来 AI 建议命名功能
目录 1微软 Visual Studio 迎来 AI 建议命名功能 2专访核桃编程CEO曾鹏轩:实操是掌握编程技能的唯一办法 1微软 Visual Studio 迎来 AI 建议命名功能 IT之家 12 月 19 日消息,使用付费 GitHub Copilot Chat 扩展的 Visual Studio Preview 用户…...
【排序算法】C语言实现选择排序与冒泡排序
文章目录 🚀前言🚀冒泡排序✈️冒泡排序的逻辑✈️冒泡排序coding 🚀选择排序✈️选择排序的逻辑✈️选择排序coding 🚀前言 这里是阿辉算法与数据结构专栏的第一篇文章,咱们就从排序算法开始讲起,排序算法…...
设计模式之-原型模式,快速掌握原型模式,通俗易懂的理解原型模式以及使用场景
文章目录 一、什么是原型模式二、使用场景三、代码示例 一、什么是原型模式 原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新的对象,而无需通过调用构造函数来创建。原型模式通过克隆操作来创建对象,提供了一种更加灵活和高效…...
数据结构之进阶二叉树(二叉搜索树和AVL树、红黑树的实现)超详细解析,附实操图和搜索二叉树的实现过程图
绪论 “生命有如铁砧,愈被敲打,愈能发出火花。——伽利略”;本章主要是数据结构 二叉树的进阶知识,若之前没学过二叉树建议看看这篇文章一篇掌握二叉树,本章的知识从浅到深的对搜索二叉树的使用进行了介绍和对其底层…...
SpringIOC之LocaleContext
博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…...
前端案例—antdDesign的Select多选框组件加上全选功能
前端案例—antdDesign的Select多选框组件加上全选功能。 实现效果如下: Select 组件里有这个属性,可以利用这个对下拉菜单进行自定义。 const handleChange (e, value) > {setSelectState(e.target.checked)let arr productOptions?productOption…...
个人财务工具、密钥管理平台、在线会计软件、稍后阅读方案 | 开源专题 No.51
gethomepage/homepage Stars: 10.1k License: GPL-3.0 这个项目是一个现代化、完全静态的、快速且安全的应用程序仪表盘,具有超过 100 种服务和多语言翻译的集成。 快速:网站在构建时以静态方式生成,加载时间飞快。安全:所有对后…...
HBase基础知识(二):HBase集群部署、HBaseShell操作
1. HBase安装部署 1.1 Zookeeper正常部署 首先保证Zookeeper集群的正常部署,并启动之: 创建集群启动脚本: #!/bin/bash case $1 in "start"){ for i in hadoop100 hadoop101 hadoop102 do echo----------zookeeper $i 启动----…...
C 标准库 - <time.h>
简介 time.h 头文件定义了四个变量类型、两个宏和各种操作日期和时间的函数。 库变量 下面是头文件 time.h 中定义的变量类型: 序号变量 & 描述1size_t是无符号整数类型,它是 sizeof 关键字的结果。2clock_t这是一个适合存储处理器时间的类型。3…...
养老院自助饮水机(字符设备驱动)
目录 1、项目背景 2、驱动程序 2.1 三层架构 2.2 驱动三要素 2.3 字符设备驱动 2.3.1 驱动模块 2.3.2 应用层 3、设计实现 3.1 项目设计 3.2 项目实现 3.2.1 驱动模块代码 3.2.2 用户层代码 4、功能特性 5、技术分析 6. 总结与未来展望 1、项目背景 养老院的老人…...
哪些网站可以做百科来源/企业网站建设的一般要素
template 包 概述(Overview) template 包实现了数据驱动模板用于生成文本输出。 要生成HTML输出,请参阅html/template包,它具有与此包相同的接口,但会自动保护HTML输出免受某些攻击。 通过将模板应用于数据结构来执行模板。模板中的注释引用数…...
鸿鹄网站建设/各大网站排名
本文目标是充当使用Selenium Docker镜像以及CodeceptJS和Express服务器的“操作方法”指南。其中,我们将涵盖:什么是E2E验收测试?为什么要使用Docker?松耦合的测试工具测试工具层创建测试项目E2E验收测试验收测试是典型软件开发过…...
自己做卖东西网站/免费大数据查询
问题描述在操作系统中,数据通常以文件的形式存储在文件系统中。文件系统一般采用层次化的组织形式,由目录(或者文件夹)和文件构成,形成一棵树的形状。文件有内容,用于存储数据。目录是容器,可包…...
那个网站是响应式的/企业营销策划
博主说:在本篇文章中,马化腾先生亲口讲述了自己的创业史,回顾了早期创业之艰辛、公司生存之法则,从“创业维艰、自我颠覆、产品思维和最大担忧”四个方面分别进行了阐述,值得每一个互联网人为之深思。 正文 创业维艰 我…...
做教学的视频网站有哪些/seo查询 工具
为什么80%的码农都做不了架构师?>>> 一、什么是sandbox 每个iOS应用都被限制在“沙盒”中,“沙盒”相当于一个加了仅主人可见权限的文件夹,苹果对沙盒主要有以下限制。 1、应用程序可以在自己的沙盒里运作,但是不能访…...
建设银行的网站是什么/网络营销外包推广价格
对应Jenkins项目: /data/jenkins/workspace 查看端口状态: netstat -adp | grep 8092 查看 进程id: ps -ef | grep 3532 开发提供: applications.properties 配置文件: server.xml /conf/web.xml context.xml logback.xml 图片上…...