PHP 实现双因素身份认证(2FA)什么是双因素双因素身份认证(英文简称 2FA),是一种在传统 “账号 + 密码”(单因素认证)基础上增加的第二层安全验证机制,核心逻辑是要求用户同时提供两种不同类型的 “身份凭证” 才能完成登录,通过 “多重验证” 阻挡非法访问,大幅提升账户安全性。
知识因素:用户 “知道” 的信息(如账号密码、安全问题答案);
持有因素:用户 “拥有” 的物品 / 设备(如手机、U 盾、动态令牌);
生物因素:用户 “本身” 的生物特征(如指纹、人脸、声纹)。
双因素认证的本质的是:将 “知识因素”(必选的账号密码)与另外两类因素中的任意一种组合,形成 “密码 + X” 的验证逻辑(X 为持有因素或生物因素)
传统 “账号 + 密码” 容易因密码泄露(如撞库、钓鱼、密码被盗)导致账户被盗,而双因素认证中,即使第一层密码被破解,第二层凭证(如动态码、U 盾)仍能形成安全屏障 —— 非法入侵者无法获取用户的物理设备或生物特征,也就无法完成登录。比如你之前开发的系统中,用户需先输入正确的账号密码,再输入手机 APP 生成的动态码,才算登录成功,即使密码 ...
使用 Docker 快速部署 MinIO 文件存储服务在日常开发中,文件管理(如图片、视频、日志、数据集等)常面临分散存储、安全性低、运维复杂等问题,传统文件存储方式易引发上传漏洞等风险。MinIO 作为一款高性能、轻量级的对象存储服务,兼容 Amazon S3 协议,可集中管理分散对象,减少暴露面并降低运维成本,是解决文件存储痛点的理想选择。
快速部署 MinIO(Docker 方式)1. 拉取 MinIO 镜像推荐使用指定稳定版本镜像(避免 latest 版本的兼容性问题):
docker pull minio/minio:RELEASE.2025-04-22T22-12-26Z
版本号格式为 RELEASE.年-月-日T时-分-秒Z,可在 MinIO 官方镜像仓库 选择最新稳定版。
2. 启动 MinIO 容器通过以下命令启动容器,实现数据持久化并映射端口:
docker run -d \
--name minio-server \
-p 9000:9000 \ # S3 兼容 API 端口(程序访问用)
-p 9001:9001 \ # 管理控制台 ...
Java环境安装与基础语法安装 OpenJDK 17(含开发工具)通过APT命令快速安装OpenJDK 17,适用于Ubuntu等Debian系Linux系统:
1sudo apt install openjdk-17-jdk
安装过程示意图:注:若为其他系统,需对应调整安装命令(如CentOS用yum,Windows需手动下载安装包)
验证安装安装完成后,执行以下命令验证JDK是否安装成功,需同时显示java和javac版本:
12java -versionjavac -version
验证成功示意图:
基础语法核心规则Java中公共类的命名有严格规范,与PHP的PSR - 4自动加载原则逻辑相近,具体规则如下:
公共类(public修饰)文件名必须与public类名完全一致(含大小写),否则编译会直接报错。示例:定义public class HelloWorld,对应的文件名必须为HelloWorld.java。
非公共类(无public修饰)文件名可与类名不同,但建议保持一致,便于团队协作时快速定位代码文件。示例:文件名Test.java中,可定义class Demo,编译无报 ...
利用闲置机械硬盘搭建 NAS 开发环境(code-server 篇)因为最近闲置了一块机械硬盘,想着利用它搭建一个 NAS 方便存取文件,恰好服务商提供了公网 IP,后续升级成本一年也才 200 多元,性价比很高。于是打算把开发环境部署在里面,选用 linuxserver/code-server 镜像搭建 Web 版 VS Code,操作如下:
1. 编写 docker-compose 配置创建 docker-compose.yaml 文件,配置如下:
12345678910111213141516services: code-server: image: linuxserver/code-server:latest container_name: code-server environment: - PUID=0 - PGID=0 - TZ=Asia/Shanghai - PASSWORD=202019 volumes: - /opt/code-server/config:/config ...
应急响应任务环境说明: - 服务器场景:Server2229 (开放链接) - 用户名:root 密码:p@ssw0rd123
找出黑客植入到系统中的二进制木马程序,并将木马程序的名称作为Flag值(若存在多个提交时使用英文逗号隔开,例如bin,sbin,…)提交;flag-1首先我们的思路就是查看用户曾经执行过的命令
cat /etc/init.d/cpuspeed
cpuspeed程序是一个shell脚本,其存放在/etc/init.d(Linux的开机自启目录下),并且是有执行权限的,实现开机自启动,该shell脚本执行之后又使用/bin/bash后台执行了,但是由于题目要求的是二进制木马,所以shell脚本被排除了
123456789101112131415#!/bin/bash#A backdoor program#chkconfig: 2345 23 80###BEGIN INIT INFO#Provides: pyseclabs.co ...
MySQL导入IP数据库文件偶然在网上获取了一份IP数据文件,虽数据不够完整,但很适合用于学习实践。该源文件为.mdb格式,我们可先通过Excel打开,再将其转为.csv文件,后续导入MySQL数据库。以下是详细操作步骤:
1. 创建数据库与数据表首先登录MySQL,创建存储IP数据的数据库和对应数据表,用于承接后续导入的数据。
1.1 执行SQL语句12345678910111213141516-- 创建IP数据专用数据库CREATE DATABASE ipdat;-- 切换至该数据库USE ipdat;-- 创建存储IP数据的表CREATE TABLE ip_database ( id INT AUTO_INCREMENT PRIMARY KEY, StartIPNum BIGINT, StartIPText VARCHAR(15), EndIPNum BIGINT, EndIPText VARCHAR(15), Country VARCHAR(50), Local VARCHAR(50), Start1 BIGINT, End ...
银河麒麟(KylinOS)系统详解:包管理、安装与实践指南银河麒麟是由国防科技大学主导研发、麒麟软件维护的国产操作系统,深度适配国产软硬件平台,支持主流处理器架构,兼容GPU、桥片等新硬件。其中,麒麟V10桌面版是国产系统入门的优选版本。
一、基础包管理体系银河麒麟的包管理分为两大体系,核心差异在于包格式与工具链,需根据系统分支选择对应工具。本次实操以「Red Hat分支」为例。
1.1 基于DEB的管理体系(Debian/Ubuntu分支)适用于桌面版、社区版等Ubuntu-based分支,包格式为.deb。
核心工具分工:
dpkg:底层工具,直接操作.deb包(安装/卸载/查询),不自动解决依赖,需手动处理依赖关系。
apt/apt-get:高级工具,支持依赖自动解析、软件源管理、在线安装,可搭配图形化工具(如麒麟软件中心)使用。
常用操作示例(带目的说明):123456# 作用:更新软件源缓存,获取最新软件列表sudo apt update # 作用:在线安装软件,自动下载并解决依赖(package替换为软件名,如 ...
单节点部署
引用站外地址
单节点k3s以及一台主节点两台台计算节点部署
K3s-基础:基础概念、单机部署、集群化部署-Docker-运行配置与安装笔记
引用站外地址
至2025-11-04 最新 K3s
K3s离线包
K3s 高可用集群实操笔记:3 Master + 外部 PostgreSQL-15 部署全流程本文档为“3个Master节点+外部PostgreSQL-15”架构的K3s高可用集群部署指南,包含核心优势解析、环境配置、实操步骤,优化后更突出逻辑层级与关键信息,便于快速查阅与执行。
一、核心优势解析1. 外部PostgreSQL-15优势采用外部PostgreSQL-15作为 ...
Linux 系统虚拟化平台识别与 CPU 架构查询指南一、虚拟化平台识别通过读取系统 DMI(桌面管理接口)信息,可快速识别物理机、虚拟机或云服务器的硬件与平台归属。以下是核心查询命令及说明。
1.1 基础信息查询命令表
功能
执行命令
核心作用
查看产品型号
cat /sys/class/dmi/id/product_name
识别设备硬件型号(区分虚拟/物理)
查看厂商
cat /sys/class/dmi/id/sys_vendor
确认设备供应商(如 QEMU、阿里云)
查看主板型号
cat /sys/class/dmi/id/board_name
获取主板具体型号(硬件兼容性判断)
查看序列号
cat /sys/class/dmi/id/product_serial
读取设备唯一序列号(资产管理)
查看 UUID
dmidecode -s system-uuid
获取系统全球唯一标识符
1.2 各字段详细说明查看产品型号
命令:cat /sys/class/dmi/id/product_name
原理:DMI 规范通过 /sys/cla ...
web 应用安全开发
未读ThinkPHP中hasOne、hasMany和belongsTo的关联关系详解本文的一个概念在ThinkPHP框架中,hasOne、hasMany和belongsTo用于定义模型间的关联关系,分别对应一对一(1:1)、一对多(1:n) 和多对一(n:1) 关系。以下通过示例详细说明:
重要的概念:N+1查询问题在关联查询中,“N+1 查询问题”是一个典型的性能陷阱,而 ThinkPHP 的 with() 方法通过关联预加载机制从根本上解决了这个问题。下面从概念、影响、形成原因和解决原理四个方面详细说明:
一、什么是 N+1 查询问题?“N+1 查询问题”指的是:当查询主模型的 N 条记录 时,会先执行 1 次主查询 获取这 N 条记录,然后为每条记录单独执行 1 次关联查询 获取关联数据,最终导致 1 + N 次数据库查询 的低效情况。
例如:查询 10 篇文章,每篇文章需要获取对应的作者信息。若不优化,会产生 1(查文章) + 10(每篇文章查作者) = 11 次查询。
二、N+1 查询的形成方式和条件形成方式:
先查询主模型列表:执行 1 次查询获取主模型的 N 条记录 ...
仿真设备
未读Pnet镜像资源分享本次分享的pnet镜像来源包括三类:pnet-eve国区代理、个人制作镜像,以及部分pnet-labs资源。其中,pnet-eve与pnet-labs均为优秀的模拟器,二者均有懒人版镜像,且原作者已分享大量资源,本次内容以转发为主。
简单分享了一些 pnet镜像,这些镜像有的来自于pnet-eve国区的代理,有的是自己做的镜像,也有部分来自于pnet-labs,当然无论是pnet-eve还是pnet-labs都是非常优秀的模拟器,他们都有各自的懒人版,各自的作者都分享了很多镜像,我大部分仅仅做一个转发
名称
镜像格式
密码
截图
苹果mac-os
quem
admin/eve
DC-渗透测试靶机(DC1-DC9)
quem
无
DRIPPING
quem
无
metasploit
quem
msfadmin/msfadmin
ESXI系列
quem
root/VMware1!
堡垒机JumpServerv4.10.1-lts
quem
root/Test@123(终端)admin& ...
k3s 核心概念指南
引用站外地址
3台K3s控制节点部署+外挂pgsql数据库
K3s 高可用集群实操笔记:3 Master + 外部 PostgreSQL-15 部署全流程
随着Kubernetes技术的发展,越来越多的开发者和运维人员开始接触和使用Kubernetes。但对于资源受限的环境,传统的Kubernetes部署显得过于复杂和资源密集。K3s,作为一个轻量级的Kubernetes发行版,为这些场景提供了完美的解决方案。本教程将带领K3s新手一步步搭建自己的Kubernetes集群。
K3s是Rancher Labs开发的轻量级Kubernetes发行版,专为边缘计算、IoT和小型部署环境设计。它通过减少资源消耗和简化安装流程,使得在单机或少数几台机器上快速部署Kubernetes成为可能。
与docker比较与K8s比较一、k3s 与 Docker 的核心区别Docke ...
CentOS 7 通过 Packstack 安装 OpenStack Train 完整步骤OpenStack是一个开源的云基础设施即服务(IaaS)管理平台,主要用于构建和管理公共或私有云环境中的计算、存储和网络资源。
这个问题很基础但至关重要,理解它是掌握云基础设施的第一步。OpenStack的核心价值在于通过标准化接口,将分散的硬件资源整合为统一的云平台,实现资源的弹性调度和自动化管理。
引用站外地址
公众号阅读
CentOS 7 通过 Packstack 安装 OpenStack Train 完整步骤
OpenStack的核心特性
开源免费:基于Apache许可证,任何人都可以获取源代码,进行二次开发或部署,无需支付商业软件许可费用。
资源统一管理:能够集中管理服务器、存储设备和网络设备,将其虚拟化为可按需分配的计算实例、块存储、对象存储和虚拟网络。
模块化架构:由多个独立的服务 ...
Consul KV密钥管理:核心价值与PHP实现方案一、为什么需要用Consul统一密钥管理?传统密钥存储(硬编码、本地配置文件)存在安全风险高、管理混乱、运维低效三大痛点,而Consul通过集中化KV存储可彻底解决这些问题,核心价值体现在四个维度。同时,Consul内置的ACL策略能实现调度审核与权限划分,将每个密钥权限控制到最小,避免因过高权限导致的误操作。
1. 安全:降低泄露风险,满足合规要求这是Consul密钥管理的核心,通过多重机制规避传统存储的致命漏洞:
集中加密存储:密钥在Consul中以加密形式存储(需开启Consul的encrypt配置项),即使数据目录被意外访问,也无法直接获取原文。
细粒度权限控制(ACL):通过访问控制列表精确分配权限,例如仅允许应用“读”数据库密钥、仅允许运维人员“写”密钥,杜绝越权。
加密传输(TLS):客户端与Consul集群通信采用TLS(HTTPS)加密,防止密钥在网络传输中被拦截。
杜绝硬编码/本地文件风险:避免密钥因代码提交(如Git)、服务器文件泄露失控,解决传统配置文件的安全隐患。
2. 管理:统一生命周期,降低 ...
优化后的Markdown文档结构更清晰、逻辑更连贯,修正了原内容中的标题错位、命令笔误,同时补充了操作场景说明,提升可读性和实用性。
NVM与PM2安装配置指南PM2是Node.js应用的守护进程管理器,可实现应用常驻后台、故障自动重启等功能。其依赖Node.js环境,因此需先通过NVM(Node Version Manager)管理Node.js版本,再完成PM2安装与使用。
一、NVM安装与配置NVM用于灵活切换Node.js版本,适配不同项目的环境需求。
1.1 网络代理配置(可选)若网络无法访问GitHub,需先配置Git代理,替换示例中的代理地址和端口。
1234567# 设置全局Git代理git config --global http.proxy http://192.168.87.1:7890git config --global https.proxy http://192.168.87.1:7890# 如需取消代理,执行以下命令# git config --unset http.proxy# git config --unset https.proxy
1.2 安 ...
PHP与Consul API的完美融合优化后的文档在结构逻辑、代码规范性和可读性上进行了提升,按“概述→准备工作→核心实现→API参考”的流程重组,同时修复代码语法问题、统一格式规范。
1. 概述在分布式系统中,服务发现与配置管理是保障系统稳定性的核心环节。Consul 作为功能全面的中间件,可提供服务注册/发现、健康检查、KV配置存储等能力;PHP 则是 Web 开发领域的主流语言,广泛应用于业务系统开发。
本文聚焦 PHP 与 Consul API 的实际融合方案,通过依赖引入、客户端配置、核心功能编码,完整实现服务查询、健康检查等关键场景,为分布式 PHP 系统提供基础支撑。
2. 准备工作2.1 安装 Consul PHP 依赖使用 Composer 引入成熟的 Consul API 客户端库,避免重复开发 HTTP 请求逻辑。
1composer require dcarbone/php-consul-api
2.2 配置 Consul 客户端统一管理 Consul 连接参数,避免硬编码,支持后续环境切换(如开发/生产环境)。
12345678910&l ...




































