Web技术核心与安全风险(三)Web 后端安全

Web技术核心与安全风险(三)Web 后端安全

PART 1   PHP基本语法PHP介绍PHP(HyperText Preprocessor):超文本预处理器官方网站: https://www.php.net/学习工具:Trae+Phpstudy如何在Trae 中搭建PHP环境1.trae--扩展插件市场里中,搜索PHP,并安装php debug 、php IntelliSense2.在扩展设置里面,配置PHP解释器总共要设置三个,如下图所示,没有的自己创建,路径设为自己电脑里PHP的路径即可PHP基础语法PHP 代码必须包含在 <?php ... ?>标签中。1.打印hello world<?phpecho "hello world";?>语句结束:每条语句以 ;(分号)结束。   注释 //单行注释 /*多行注释*/2.变量命名规则:(1)变量以 $ 符号开始,后面跟着变量的名称(2)变量名必须以字母或者下划线字符开始(3)变量名只能包含字母、数字以及下划线(A-z、0-9 和_)(4)变量名不能包含空格(5)变量名是区分大小写的($y 和 $Y 是两个不同的变量)示例:<?php$message = "欢迎学习 PHP!";echo $message; // 输出变量内容echo "<h1>" . $message . "</h1>";?>PHP数组创建数组(1)[ ]----php版本5.4+(2)array() 函数用于创建数组示例<?php$student = ["xiaoming", "xiaolin", "xixi", "xiaoai"];echo $student[0];?>//输出结果为xiaomingif 条件语句判断条件语句:根据不同情况执行不同代码语法if (条件){条件成⽴时要执⾏的代码;}示例:<?php$score = 75;if ($score >= 60) {echo "成绩及格";}?>//输出结果为成绩及格if...else语句在条件成⽴时执⾏⼀块代码,条件不成⽴时执⾏另⼀块代码,请使⽤ if....else语句语法if (条件){条件成⽴时执⾏的代码;}else{条件不成⽴时执⾏的代码;}示例<?php$score = 55;if ($score >= 60) {echo "成绩及格";} else {echo "成绩不及格";}?>//输出结果为成绩不及格if...elseif....else语句在若⼲条件之⼀成⽴时执⾏⼀个代码块,请使⽤if...elseif....else语句。语法if(条件1){条件1成⽴时执⾏的代码;}else if(条件2){条件2成⽴时执⾏的代码;}else{以上条件不成⽴时执⾏的代码;}示例<?php$score = 75;if ($score >= 90) {echo "成绩优秀";} elseif ($score >= 60) {echo "成绩及格"; // 75 >= 60 成立} else {echo "成绩不及格";}?>//输出结果为成绩及格PHP循环1.for循环语法for (初始值; 条件; 增量){要执⾏的代码;}示例<?php$student = ['xiaoming', 'xiaolin', 'xixi', 'xiaogao'];for ($i = 0; $i <= 3 ; $i=$i+1) {echo $student[$i].' ' ;}?>2.while 循环while 循环将重复执⾏代码块,直到指定的条件不成⽴语法while (条件){要执⾏的代码;}示例<?php$count = 3;$student = ['xiaoming', 'xiaolin', 'xixi', 'xiaogao'];while ($count >= 0) {echo $student[$count].' ' ;$count=$count-1;}?>PHP函数PHP的真正威⼒源⾃于它的函数。在PHP中,提供了超过 1000 个内建的函数PHP 函数准则函数的名称应该提示出它的功能函数名称字⺟下划线开头(不能以数字开头)PHP⾃定义函数<?phpfunction functionName(){// 要执⾏的代码}?>PHP类与函数类是抽象的概念,仅仅是模板。⽤来描述具有相同属性⽅法对象的集合。⽐如:"⼈"是⼀个 类。对象实例,是某⼀个具体的事物 。如 “张三”则是具体存在 是⼀个对象示例<?phpheader("Content-Type: text/html; charset=utf-8");class student{public $name;public $age;public function say() { //自定义函数echo $this->name. " 你好!";}}$stu1 = new student();//new表示调用函数,new student 表示调用student这个函数$stu1 -> name = "xiaoming";echo $stu1->name;$stu1 -> say();?>//输出结果为xiaoming你好!PHP魔术方法(Magic Methods)PHP魔术方法(Magic Methods)在PHP中具有特定的命名和功能• 魔术方法不需要显式调用,而是由PHP解释器在特定时机自动触发。• 通常用两个下划线(__)开头,后跟方法名称,如构造方法 __construct()示例:<?phpclass Person {public function __construct() {echo "construct is coming ~";}}$p1 = new Person();?>超全局变量PHP 的强⼤在于它能轻松处理⽤⼾通过 Web 提交 的数据,这依赖于⼏个特殊的超全局变量,它们是 PHP ⾃动创建的数组。PHP提供了预定义的超全局变量,用来获取HTTP 请求信息

案例:#准备一个登录的页面<!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页面<?phpheader("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页面<?phpheader("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>";

Read more

离开舒适区之后:从三年前端到 CS 硕士——我在韩国亚大读研的得失

离开舒适区之后:从三年前端到 CS 硕士——我在韩国亚大读研的得失

过去一年多,我做了一个挺重要的决定:辞职,去韩国留学读研。 这段时间我几乎没怎么学习新的前端内容,但也没有停下来。我在韩国亚洲大学完成了计算机科学与技术(大数据)硕士的学习,在高强度的节奏里重新建立了自己的方法,也因为持续写博客获得了一些机会,担任本科 Web 实训课讲师。现在这段留学告一段落,我也准备重新回到前端领域,把这段经历当作一份额外的积累带回去。这篇复盘主要是想把这一路的收获、疲惫和一些值得记住的瞬间记录下来,留给未来的自己,也分享给路过的你。 文章目录 * 1、写在前面:我为什么会从前端转去读研 * 2、留学生活的关键词:卷、AI、被看见以及校庆的“放开玩” * 3、我的“结果卡片” * 4、得:这一年半我真正收获的东西 * 5、失:我付出的代价 * 6、期末周:我经历过的“高强度交付周” * 7、前端三年经验,如何在读研里“迁移复用” * 8、我在韩国的学习系统:

双剑破天门:攻防世界Web题解之独孤九剑心法(十)

双剑破天门:攻防世界Web题解之独孤九剑心法(十)

免责声明:用户因使用公众号内容而产生的任何行为和后果,由用户自行承担责任。本公众号不承担因用户误解、不当使用等导致的法律责任 **本文以攻防世界部分题为例进行演示,后续会对攻防世界大部分的web题目进行演示,如果你感兴趣请关注** 目录 一:Lottery 二:ics-05 三:总结 一:Lottery 打开后发现这个靶场加载异常缓慢,然后他还给了源码,我们先不看源码先熟悉一下这个网站是什么 这应该是一个类似猜数字游戏,选对7个号码即可得到相应奖励 然后注册 随便输入7个数字发现一个也没中,白费2元 然后我们随便点击这个网站的功能发现如果想要flag需要有相对应的余额 我们这会的思路就是利用bp抓包看看能不能修改我们的余额 好像成功了,我们试一试能不能换flag 居然说没有足够的钱,这个方法不行只要将页面上的数字修改只要刷新就会变回原来的余额 居然不能修改余额那就看看在猜数字的页面有没有突破口,发现其访问了api.php我们继续代码审计 看到如下核心代码,首先随机生成七位数字(random_win_nums)然后将其赋值给$win_number。随后关

如何用10分钟语音数据构建专业级变声模型:Retrieval-based-Voice-Conversion-WebUI全平台实践指南

如何用10分钟语音数据构建专业级变声模型:Retrieval-based-Voice-Conversion-WebUI全平台实践指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI语音数据小于等于10分钟也可以用来训练一个优秀的变声模型! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI Retrieval-based-Voice-Conversion-WebUI是一款基于VITS架构的跨平台语音转换框架,它突破性地实现了仅需10分钟语音数据即可训练高质量模型的能力,并支持NVIDIA、AMD、Intel全平台显卡加速。该框架通过创新的top1检索技术有效防止音色泄漏,结合模块化设计满足从科研实验到商业应用的多样化需求,为语音转换领域提供了高效且易用的解决方案。 零基础部署流程:三行命令完成环境配置 硬件兼容性检查 在开始部署前,需确认系统满足以下基本要求: * Python 3.8及以上版本 * 至少4G

前端部署:从开发到生产的最后一公里

前端部署:从开发到生产的最后一公里 毒舌时刻 前端部署?这不是运维的事吗? "我只负责写代码,部署交给运维"——结果部署失败,互相甩锅, "我直接把文件上传到服务器"——结果更新不及时,缓存问题频发, "我用FTP上传,多简单"——结果文件传丢,网站崩溃。 醒醒吧,前端部署是前端开发的重要环节,不是别人的事! 为什么你需要这个? * 快速上线:自动化部署,减少人工操作 * 环境一致性:确保开发、测试、生产环境一致 * 回滚能力:出现问题时可以快速回滚 * 监控和日志:实时监控网站状态和错误 反面教材 # 反面教材:手动部署 # 1. 本地构建 npm run build # 2. 手动上传文件 ftp ftp://example.