全栈网络安全|渗透测试-1

网站四大件

  • 系统
    系统是指服务器上运行的操作系统,它是承载网站运行的基础。常见的操作系统包括Linux(如Ubuntu、CentOS)、Windows Server等。操作系统负责管理硬件资源,并为运行在其上的软件提供一个稳定的环境。
  • 中间件
    中间件是介于操作系统、数据库管理系统与应用程序之间的软件。它用于解决分布式系统的异构网络环境下软件之间的互连与互操作问题,便于开发者专注于业务逻辑而不必担心底层技术细节。常用的中间件有Web服务器(如Apache HTTP Server、Nginx)、应用服务器(如Tomcat、JBoss/WildFly)等
  • 数据库
    数据库用于存储网站的所有数据,如用户信息、产品详情、交易记录等。根据数据的组织形式,数据库可以分为关系型数据库(如MySQL、PostgreSQL、Oracle)和非关系型数据库(NoSQL,如MongoDB、Redis)。选择合适的数据库对于确保网站性能至关重要。
  • 源码
    源码是实现网站功能的具体编程代码,包含了前端展示(HTML、CSS、JavaScript等)、后端逻辑(Java、PHP、Python、Node.js等语言编写)以及与其他组件交互的代码。源码的质量直接影响到网站的功能性、安全性及可维护性。

中间件的配置

身份验证

中间件的身份验证主要用于确保只有经过授权的用户才能访问特定资源。这通常涉及到检查用户的凭据(如用户名/密码、令牌等)并决定是否允许请求继续进行。

目录权限

虽然直接与“目录权限”相关的中间件不多,但可以通过编写自定义中间件来限制对某些路径下的资源的访问,或者结合文件系统模块(如Node.js中的fs模块)来实现对文件目录的访问控制。

解析规则

解析规则通常涉及URL重写、路由匹配等操作,很多Web框架都内置了强大的路由功能,允许开发者灵活地定义路由规则。

常规Web应用搭建

搭建流程

  1. 购买云服务器
  2. 购买域名
  3. 云服务器搭建中间件(例如window搭建iis)
  4. 下载并上传web程序源码
  5. 添加网站并绑定域名目录

搭建模式

  • 端口模式
    不同端口对应网站不同
    www.baidu.com
    www.baidu.com:8080
  • 子域名模式
    不同子域名对应网站不同
    www.baidu.com
    haokan.baidu.com
  • 目录模式
    www.baidu.com/zbld
    www.baidu.com/tds

Web其它搭建

Docker容器

想象一下你正在做一个手工艺品项目,需要特定的工具和材料。Docker就像是一个神奇的盒子,你可以把所有你需要的东西都放进这个盒子里,无论你去哪里,只要带着这个盒子,你就能在任何地方继续你的项目,而不用担心缺少什么。对于Web开发来说,Docker让你能够把网站所需的所有软件和配置打包在一起,这样不管是在你的电脑上还是服务器上运行,都能保证一切正常工作。

集成软件

集成软件就像是一位全能助手,它能帮你把不同的任务整合起来,让事情变得简单。比如,如果你要制作一个视频,你可能需要使用多个软件来剪辑、添加音乐和特效。集成软件就像是把这些功能都集中到一起的应用程序,你只需要在一个地方操作就能完成所有的步骤。在Web开发中,集成软件可以帮助自动处理代码测试、更新网站等任务,减少手动操作的工作量。

分配站

这个术语在这里可能指代的是服务器或服务分配策略,即如何有效地分配网络资源、处理请求或是分发内容给用户。例如,在构建高可用性的Web应用时,可能会用到负载均衡器来分配来自客户端的请求到不同的服务器上,以保证系统的稳定性和响应速度。另外,“分配站”也可能指的是内容分发网络(CDN)的一个节点,用于缓存并快速提供静态资源给最终用户。

web程序源码

开源

定义:开源指的是软件的源代码对公众开放,任何人都可以查看、修改和分发该软件。这种模式促进了协作和技术进步。

  • 优势
    • 社区支持:开源项目通常有一个活跃的社区,可以提供帮助和支持。
    • 透明性:用户可以审查代码的安全性和功能。
    • 成本效益:大多数情况下是免费使用的,降低了开发成本。
  • 例子:WordPress是一个非常流行的开源博客和网站内容管理系统;还有如Laravel(PHP框架)和Django(Python框架),它们都为开发者提供了强大的工具集来加速开发过程。

商业

定义:商业软件是指由公司或个人开发并销售的软件,其源代码通常是闭源的,即不对外公开。

  • 优势
    • 专业支持:购买软件通常会附带技术支持服务。
    • 质量保证:经过严格的测试和质量控制流程,确保了较高的稳定性和安全性。
    • 独特功能:可能包含一些开源版本不具备的专业或高级功能。
  • 例子:Adobe Dreamweaver是一款专业的网页设计和编辑软件;Shopify是一个电子商务平台,它为企业提供创建在线商店的服务,并且有多种付费计划可供选择。

自写

定义:自写代码意味着从零开始或者基于现有的库/框架自行开发软件,满足特定需求或实现特定功能。

  • 优势
    • 定制化:可以根据自己的具体需求进行开发,实现所需的所有功能而不必妥协。
    • 学习与成长:对于开发者来说,这是一个提升技能的好机会。
    • 知识产权:拥有完全的知识产权,不用担心版权问题。
  • 挑战
    • 时间和资源消耗:需要投入大量的时间来进行规划、开发、测试等。
    • 维护责任:所有后续的更新和维护工作都需要自己承担。

开源

源码可见

开源项目的核心特点就是其源码是公开透明的。这意味着:

  • 透明度高:任何人都可以审查代码的安全性、功能等。
  • 社区驱动:通过社区贡献,开源软件可以获得更快的改进和修复。
  • 学习资源:为开发者提供了学习和借鉴的机会,有助于技术成长。
源码不可见
加密

虽然直接加密整个应用程序的源码并不是一个常见的做法(尤其是在开源环境中),但有几种方式可以在一定程度上保护源代码不被轻易读取或理解:

  • 编译后发布:将源代码编译成机器码或字节码(如Java编译为.class文件,Python可以通过pyc文件)发布,而不是直接提供源代码。这样做的目的是增加阅读和理解原始代码的难度。
  • 代码混淆:特别是在JavaScript等脚本语言中,开发者可能会使用代码混淆工具来打乱代码结构,使得即使获取了源码也难以阅读和理解。
语言特性

不同的编程语言有不同的特性和机制,可能会影响代码的可见性和安全性:

  • 解释型语言 vs 编译型语言:像Python这样的解释型语言在执行时需要保持源码的形式(除非进行编译或混淆),而C++等编译型语言则在编译阶段将源代码转换为机器语言,从而提高了代码的保密性。
  • 虚拟机和字节码:一些语言(如Java、C#)编译成中间字节码,在运行时由虚拟机解释执行。这种机制既保留了一定程度的灵活性,又增加了直接从字节码反编译回源码的难度。
  • 闭源库:即使是开源项目,也可能依赖于闭源的第三方库或组件。这些库虽然集成到了项目中,但其内部实现细节对外部用户来说是不可见的。

数据库

本地数据库

定义:本地数据库指的是安装并运行在您自己的服务器或计算机上的数据库系统。它允许您对数据的存储位置、管理方式有完全的控制权。

  • 优点
    • 控制力强:您可以直接管理和配置数据库环境。
    • 安全性高:由于数据保存在本地,减少了外部访问的风险。
  • 缺点
    • 维护成本高:需要自行负责硬件维护、软件更新和故障恢复等。
    • 扩展性有限:相比云服务,扩展资源(如增加存储容量或提高计算能力)可能更复杂且成本更高。

站库分离

定义:站库分离是指将网站的应用程序部分(前端与后端逻辑)与数据库分开部署,通常位于不同的服务器上。这样做可以提高性能、安全性和可扩展性。

  • 优点
    • 提升性能:减少单个服务器的负担,提高响应速度。
    • 增强安全性:即使攻击者获得了应用程序服务器的访问权限,他们也无法直接访问数据库。
    • 易于扩展:可以根据需要单独扩展应用层或数据库层。

云数据库

定义:云数据库是通过互联网提供的数据库服务,用户无需购买硬件或安装软件即可使用。常见的提供商包括阿里云、AWS、Google Cloud等。

  • 优点

    • 易用性:快速部署,易于管理。
    • 高可用性:大多数云数据库提供自动备份和灾难恢复功能。
    • 弹性伸缩:根据需求动态调整资源配置。
  • 缺点

    • 依赖网络连接:性能受网络状况影响。
    • 费用:长期使用成本可能较高,特别是对于大型企业级应用。

OSS对象存储

定义:OSS即对象存储服务,是一种用于存储大量非结构化数据的服务,例如图片、视频、文档等。阿里云OSS是一个典型的例子。

  • 优点

    • 海量存储:适合存储大量文件,支持无限扩展。
    • 低成本:按实际使用的存储量计费,非常适合预算有限的项目。
    • 高可靠性:提供了数据冗余和持久性保障,确保数据的安全。
  • 缺点

    • 不适合事务处理:由于其设计目的主要是为了存储静态内容,因此不适合用来替代传统的关系型数据库执行复杂的查询或事务操作。

访问方式

常规访问

url和文件目录对应上,在这种模式下,网站的URL直接映射到服务器上的文件目录结构。例如,如果一个用户请求http://example.com/about.html,服务器会尝试从其根目录下的about.html文件中读取内容并返回给用户。

路由访问

url与文件目录对应不上,要根据配置路由决定

  • 工作原理:当你访问一个URL,比如http://example.com/user/profile,这个请求会被发送到服务器,然后根据预先定义好的路由规则来决定哪个函数或方法应该被调用来处理这个请求。这意味着URL不再需要与实际的文件系统路径相匹配。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ctfshow做题笔记—栈溢出—pwn65~pwn68

目录 前言 一、pwn65(你是一个好人) 二、pwn66(简单的shellcode?不对劲,十分得有十二分的不对劲) 三、pwn67(32bit nop sled)(确实不会) 四、pwn68(64bit nop sled) 前言 做起来比较吃力哈哈,自己还是太菜了&…

【新手指南】pyqt可视化远程部署deepseek7B蒸馏版模型

本地效果:(如果想做这个的本科毕设,建议美化界面。) 总结:MobaXterm远程连接autodl服务器,在MobaXterm上利用X11转发使pyqt可视化页面在自己的电脑上展现出来。 1. 官网下载MobaXterm MobaXterm free Xse…

SpringBoot(一)--搭建架构5种方法

目录 一、⭐Idea从spring官网下载打开 2021版本idea 1.打开创建项目 2.修改pom.xml文件里的版本号 2017版本idea 二、从spring官网下载再用idea打开 三、Idea从阿里云的官网下载打开 ​编辑 四、Maven项目改造成springboot项目 五、从阿里云官网下载再用idea打开 Spri…

DeepSeek×博云AIOS:突破算力桎梏,开启AI普惠新纪元

背景 在全球人工智能技术高速迭代的背景下,算力成本高企、异构资源适配复杂、模型部署效率低下等问题,始终是制约企业AI规模化应用的关键。 DeepSeek以创新技术直击产业痛点,而博云先进算力管理平台AIOS的全面适配,则为这一技术…

JVM垃圾回收面试题及原理

1. 对象什么时候可以被垃圾器回收 如果一个或多个对象没有任何的引用指向它了,那么这个对象现在就是垃圾,如果定位了垃圾,则有可能会被垃圾回收器回收 如果要定位什么是垃圾,有两种方式来确定 引用计数法可达性分析算法 1.1 …

计算机视觉算法实战——老虎个体识别(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​ 1. 领域介绍 老虎个体识别是计算机视觉中的一个重要应用领域,旨在通过分析老虎的独特条纹图案,自动识别和区…

[Kubernetes] 7控制平面组件

1. 调度 kube- scheduler what 负责分配调度pod到集群节点监听kube-apiserver,查询未分配node的pod根据调度策略分配这些pod(更新pod的nodename)需要考虑的因素: 公平调度,资源有效利用,QoS,affinity, an…

AI赋能Python零代码编程知识技能体系构架

欢迎大家订阅本专栏,下面我先介绍一下本专栏模块结构与知识技能体系。 以下是为您设计的《AI赋能Python零代码编程》专栏目录框架及内容建议,每个方向均包含系列文章规划: 模块一:开发环境搭建 手把手搭建Python全栈开发环境 A…

基于AMD AU15P FPGA的SLVS-EC桥PCIe设计方案分享

作者:Hello,Panda 各位FPGAer周末愉快,今天熊猫君分享一个基于AMD AU15P FPGA的SLVS-EC桥PCIe设计方案。 一、方案背景 先说方案的应用背景:众所周知,较为上层的如基于AI的机器视觉应用,大多基于高端的专用SoC、AI专…

二叉树-二叉树的右视图

二叉树的右视图 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。输入:二叉树的根结点 输出:整型列表 思路:使用层序遍历,建立二元列…

【C++】vector(下):vector类的模拟实现(含迭代器失效问题)

文章目录 前言一、vector类的常用接口的模拟实现1.头文件(my vector.h)整体框架2.模拟实现vector类对象的常见构造3.模拟实现vector iterator4.模拟实现vector类对象的容量操作5.模拟实现vector类对象的访问6.模拟实现vector类对象的修改操作 二、vector…

抽奖系统测试报告

项目链接: 管理员登录页面 项目功能: 管理员登录: 登录方式分为两种: 手机号密码登录: 正确输入密码和手机号登录 短信验证码登录: 输入手机号,等待验证码,输入验证码登录 管理员注册: 登录页面点击注册按钮即可注册管理员身份 人员管理模块: 人员管理模块分为注册…

理解梯度下降、链式法则、梯度消失/爆炸

第一章:人工智能之不同数据类型及其特点梳理 第二章:自然语言处理(NLP):文本向量化从文字到数字的原理 第三章:循环神经网络RNN:理解 RNN的工作机制与应用场景(附代码) 第四章:循环神经网络RNN、LSTM以及GR…

从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(十一) 实现服务端和客户端socketio 连接

1.后端部分 socketIO文档参考Socket.IO 首先在lib下新建socket.js文件 参考服务器API | Socket.IO import {Server} from socket.io; import http from http import express from "express"const app express() const server http.createServer(app) const io …

Spring Boot使用JDBC /JPA访问达梦数据库

Spring Boot 是一个广泛使用的 Java 框架,用于快速构建基于 Spring 的应用程序。对于达梦数据库(DMDB)的支持,Spring Boot 本身并没有直接内置对达梦数据库的集成,但你可以通过一些配置和依赖来支持达梦数据库。 以下…

蓝桥杯嵌入式学习日记(三)——按键的长按、短按与双击(三行按键法)【STM32】【HAL库】

目录 一、查阅相关资料二、程序的编写1、创建工程2、三行按键法3、短按与长按4、双击 一、查阅相关资料 想要进行一块板子的开发,需要先查阅资料了解器件连接。   从CT117E-M4产品手册中不难发现,按键分别有PB0、PB1、PB2、PA0分别对应B1、B2、B3、B4…

【网络安全 | 漏洞挖掘】通过JWT的IDOR实现账户接管

未经许可,不得转载。 文章目录 正文正文 在审查目标平台“redirect.com”的Web应用时,我发现它使用了JSON Web Token(JWT)进行身份验证,因此决定尝试进行账户接管(ATO)攻击。 首先,我创建了一个新账户并测试了其功能。在此过程中,我尝试在“firstName”字段输入XSS(…

从0到1入门RabbitMQ

一、同步调用 优势:时效性强,等待到结果后才返回 缺点: 拓展性差性能下降级联失败问题 二、异步调用 优势: 耦合度低,拓展性强异步调用,无需等待,性能好故障隔离,下游服务故障不影响…

CST直角反射器 --- 距离多普勒(RD图), 毫米波汽车雷达ADAS

之前几期介绍了雷达是如何从频域换去时域,然后时域计算距离。 这期我们加上一个维度,既看距离,又看速度。速度的计算当然就是多普勒原理,所以距离速度的二维图又叫range-doppler图。 启用雷达ADAS Range-Doppler模板&#xff1a…

手写一个Tomcat

Tomcat 是一个广泛使用的开源 Java Servlet 容器,用于运行 Java Web 应用程序。虽然 Tomcat 本身功能强大且复杂,但通过手写一个简易版的 Tomcat,我们可以更好地理解其核心工作原理。本文将带你一步步实现一个简易版的 Tomcat,并深…