当前位置: 首页 > news >正文

20260205网安学习日志

20260204

Web后端安全

一、工具介绍

(一)PHP

PHP(全称:PHP: Hypertext Preprocessor,超⽂本预处理器)是⼀⻔开源的服务器端脚本编程语⾔,专⻔⽤于开发Web⽹站的后端逻辑。 可免费下载使⽤,PHP ⽂件可包含⽂本、HTML、JavaScript代码和 PHP 代码,PHP 代码在服务器上执⾏,结果以纯 HTML 形式返回给浏览器。是目前使用最多的后端语言。

⽹站的组成分为「前端」和「后端」,两者分⼯明确,缺⼀不可:

前端(HTML/CSS/JS):只负责「展示」,⽐如⻚⾯布局、按钮样式、图⽚显示,运⾏在⽤户电脑,决定⽹站「⻓什么样」。

后端(PHP):⽹站的核⼼⼤脑,只负责「处理业务逻辑」,运⾏在服务器,决定⽹站「能做什么」。

PHP负责处理⽹站所有的核⼼操作:

包括1.验证⽤户的账号密码是否正确,判断能否登录; 2.接收⽤户上传的⽂件、表单信息,并处理/保存; 3.操作数据库,实现数据的增删改查(⽐如存储⽤户信息、⽂章内容); 4.处理⽤户的所有请求,返回对应的结果给前端。

(二)phpStudy

PHPStudy 是⼀个集成的 PHP 开发环境⼯具包,主要⽤于 Windows 平台,它简化了 PHP 开发环境的搭建过程,特别适合初学者和快速开发需求。是新手搭建 PHP 开发环境的首选工具,一键集成 Apache/Nginx、PHP、MySQL,无需手动配置;核心操作是「创建站点」,通过自定义本地域名和根目录,可快速运行 PHP 项目。

(三)Trae

Trae 是字节跳动 2025 年推出的AI 原生集成开发环境 (IDE),底层基于 VS Code 深度定制,从架构层面深度集成豆包大模型等 AI 能力,主打自然语言驱动开发与全流程智能化,对中文开发者友好,兼容 VS Code 生态,特别适合 Web 开发(含 PHP)场景,可与 PHPStudy 完美配合提升开发效率。

二、PHP

(一)基础语法

<?php ​ echo 'hello world'; ​ ?>

PHP 代码必须包含在 <?php ... ?>标签中!!! 这是服务器识别 PHP 代码的标识

每条语句以;(分号)结束。

//单行注释 /多行注释

<?php ​ $message = '欢迎学习PHP'; //定义变量message,**变量名可以自定义但是最好要见词生意** $name='张三'; echo $message.$name; //输出变量message ​ ?>

所有变量都必须以$符号开头。

. 连接字符串(表示拼接)

PHP可以和HTML结合在一起用混合输出

(二)数组

创建数组:array() 函数 或者 [ ]

<?php ​ $student = ["xiaoming", "xiaolin", "xixi", "xiaoai"]; ​ echo $student[0]; /从左向右取,最左侧索引为0 ​ ?>

(三)流程控制语句

if与if...else

<?php ​ $score = 75; ​ if ($score >= 60) { ​ echo "成绩及格"; ​ } ​ ?>
<?php ​ $score = 55; ​ if ($score >= 60) { ​ echo "成绩及格"; ​ } else { ​ echo "成绩不及格"; ​ } ​ ?>
<?php ​ $score = 75; ​ if ($score >= 90) { ​ echo "成绩优秀"; ​ } elseif ($score >= 60) { ​ echo "成绩及格"; ​ } else { ​ echo "成绩不及格"; ​ } ​ ?>

(四)循环语句

for循环⽤于预先知道脚本需要运⾏的次数的情况,当条件满足时重复执行代码块,条件一直满足时陷入死循环

<?php ​ $student = ['xiaoming', 'xiaolin', 'xixi', 'xiaogao']; ​ for ($i = 0; $i <= 3 ; $i=$i+1) { ​ echo $student[$i].' ' ; ​ } ​ ?>

while循环将重复执⾏代码块,直到指定的条件不成⽴,用于不知道循环次数时。

<?php ​ $count = 3; ​ $student = ['xiaoming', 'xiaolin', 'xixi', 'xiaogao']; ​ while ($count >= 0) { ​ echo $student[$count].' ' ; ​ $count=$count-1; ​ } ​ ?>

(五)类与函数

class表示类,可以通过属性表示多个不同类型的数据

new对象

<?php header("Content-Type: text/html; charset=utf-8"); //定义一个类,类名可以自定义 class student{ //属性,类中定义的变量 public $name; //public表示共开的该类的对象都可以访问 public $age; public function say() { //自定义函数 echo $this->name. " 你好!"; } } //类的使用,new一个对象 $stu1 = new student(); $stu1 -> name = "xiaoming"; echo $stu1->name; $stu1 -> say(); ?>

(六)魔术方法

PHP魔术方法(Magic Methods)在PHP中具有特定的命名和功能

魔术方法不需要显式调用,而是由PHP解释器在特定时机自动触发。

通常用两个下划线''__ ''(两个下划线中间不加空格)后跟方法名称,如构造方法 __construct()

<?php class Person { public function __construct() { echo "construct is coming ~"; } } $p1 = new Person(); //触发条件 ?>

(七)超全局变量

1、什么是超全局变量?

全局:在PHP代码的任何位置都可以直接使⽤,不需要提前定义;

超:PHP官⽅内置的变量,专⻔⽤来接收⽤户传递的各种数据,天⽣存在,直接调⽤即可 。

2、核心特点

所有超全局变量都是⼤写的数组形式;

专⻔⽤来接收「⽤户从浏览器传递给服务器的数据」;

是后端接收前端参数的核⼼⽅式,也是所有Web漏洞的「数据⼊⼝」。

3、$_GET 超全局变量 —— 接收GET请求传递的参数

$_GET 专⻔⽤来接收⽤户通过「GET请求」传递的所有数据,数据来⾃于浏览器地址栏的URL中。

语法: $_GET['参数名']

4、$_POST 超全局变量 —— 接收POST请求传递的参数

$_POST 专⻔⽤来接收⽤户通过「POST请求」传递的所有数据,数据藏在请求体中,URL中不可⻅。

语法:$_POST['参数名']

5、案例

#准备一个登录的页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <form action="b.php" method="get"> 姓名:<input type="text" name="name"><br> 年龄:<input type="number" name="age"><br> <button type="submit">提交</button> </form> </body> </html> ​ ​ \#准备另一个获取数据的php页面 <?php header("Content-Type: text/html; charset=utf-8"); $name = $_GET['name'] ; $age = $_GET['age'] ; echo "<h3>接收到的参数:</h3>"; echo "姓名:{$name}<br>"; echo "年龄:{$age}<br>"; echo "<a href='a.php'>返回填写表单</a>"; ?>

(八)序列化与反序列化!!!

传递多个数据可以用序列化对象

序列化serialize():是将⼀个 PHP 对象(包括它的类名、所有属性和属性值)转换为⼀个可存储、可传输的字符串的过程。

反序列化unserialize():是将这个字符串还原回原来的 PHP 对象。

#准备一个登录的页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <form action="b.php" method="get"> 姓名:<input type="text" name="name"><br> 年龄:<input type="number" name="age"><br> 密码:<input type="password" name="pwd"><br> <button type="submit">提交</button> </form> </body> </html> ​ ​ \#准备另一个获取数据的php页面 <?php header("Content-Type: text/html; charset=utf-8"); $name = $_GET['name'] ; $age = $_GET['age'] ; $pwd = $_GET['pwd'] ; echo "<h3>接收到的参数:</h3>"; echo "姓名:{$name}<br>"; echo "年龄:{$age}<br>"; echo "密码:{$pwd}<br>"; class student{ public $name; public $age; public $pwd; } $stu1 = new student(); $stu1 -> name = $name; $stu1 -> age = $age; $stu1 -> pwd = $pwd; //对获取的进行序列化处理 echo "<h3>序列化后的数据:</h3>"; $serialized = serialize($stu1); echo $serialized; echo "<h3>反序列化后的数据:</h3>"; $restored = unserialize($serialized); //这里输入的是序列化得到的值 echo $restored->name ; echo "<br>"; echo $restored->age ; echo "<br>"; echo $restored->pwd ; echo "<br>"; echo "<a href='a.php'>返回填写表单</a>"; ?>
http://www.jsqmd.com/news/496859/

相关文章:

  • 计算机毕业设计springboot鲜花管理系统的设计与实现 基于SpringBoot的线上花店全流程运营平台设计与实现 融合SpringBoot的鲜花电商与仓储一体化管控系统研发
  • GLM-ASR-Nano-2512算力适配:A10/A100/L4等数据中心GPU实测报告
  • 美团CPS分销系统中Java接口高并发下的性能瓶颈排查与优化技巧
  • AudioSeal基础教程:理解AudioSeal与传统数字水印在AI音频场景的差异
  • 计算机毕业设计springboot失物招领系统 基于SpringBoot的校园遗失物品智能管理平台 SpringBoot框架下的寻物启事与拾物归还一体化系统
  • OpenClaw Skill去哪下?国内最大AI Agent技能商店官网发布 - 资讯焦点
  • 饿了么CPS系统中Java后端服务的JVM参数调优与内存管理技巧
  • Chandra应用场景:独立开发者用Chandra构建个人AI助理(日程+知识+创作)
  • 2026沐浴露实测榜单|全肤质适配,香氛养肤不踩雷 - 资讯焦点
  • 霸王餐CPS系统中Java实现接口限流的多种算法与落地技巧
  • java+vue基于springboot框架的高校教室设备故障报修信息管理系统
  • 海景美女图-FLUX.1镜像免配置实测:从裸机到出图仅需12分钟
  • SecGPT-14B效果展示:同一漏洞输入下人工分析 vs SecGPT-14B输出对比
  • java+vue基于springboot框架的农产品 蔬菜商城销售网站 商家聊天系统
  • SkyWalking - 内置告警规则配置:响应时间、错误率、吞吐量阈值
  • 2026年食品厂净化厂家TOP5推荐:全链条服务的五大厂家综合评估报告 - 深度智识库
  • CPS/SPS系统中Java后端接口的响应时间优化与性能监控技巧
  • Linux系统编程----文件编程
  • 10000立方拱顶油罐(CAD)
  • 美团CPS系统中Java使用NIO提升网络通信效率的实战技巧
  • 基于 Flutter × HarmonyOS 6.0 的跨端打车平台— 服务类型选择模块实战解析
  • C++代码质量与规范:编写优雅且可维护的代码
  • 淘宝闪购SPS系统中Java服务的CPU密集型任务优化处理技巧
  • 卡尔曼滤波SOC算法模型
  • DeepChat入门必看:理解‘数据永不离开服务器’背后的容器网络隔离原理
  • WiFi 问题记录
  • 二维码生成器:从前端到打印的全流程
  • 霸王餐CPS系统中Java实现异步化处理提升系统吞吐量的技巧
  • 贪心算法集
  • MarioVerse:基于 Flutter × HarmonyOS 6.0 的超级玛丽游戏画布区域实现详解