第31天:Web开发-PHP应用&TP框架&MVC模型&路由访问&模版渲染&安全写法&版本漏洞

#知识点
1、安全开发-框架技术-ThinkPHP

2、安全开发-框架安全-版本&写法

3、安全开发-ThinkPHP-代码审计案例

|------------------------|--------------------------|--------------------------------------------------|
| 类别 | 组件/框架 | 说明 |
| [Web框架] | Laravel | 现代化、功能全面的框架,适合大多数Web应用。 |
| | Symfony | 高度模块化、功能强大的框架,适合复杂应用。 |
| | CodeIgniter | 轻量级框架,适合快速开发。 |
| | Zend Framework (Laminas) | 企业级框架,适合大规模应用,具有高扩展性和性能。 |
| | Yii | 高性能框架,适合快速开发和大规模应用。 |
| [数据库组件] | Doctrine ORM | 强大的ORM工具,支持复杂的查询和映射。 |
| | Eloquent ORM | Laravel内置ORM,简化数据库操作。 |
| | PDO | PHP的数据库抽象层,支持多种数据库引擎。 |
| | RedBeanPHP | 轻量级ORM,自动创建和管理数据库表。 |
| [模板引擎] | Twig | 灵活、现代的模板引擎,常用于Symfony项目。 |
| | Blade | Laravel内置模板引擎,支持模板继承和控制结构。 |
| | Smarty | 经典模板引擎,适合中大型项目。 |
| | Mustache | 轻量级跨语言模板引擎,支持PHP、JavaScript等。 |
| [路由组件] | FastRoute | 高性能PHP路由库,适用于小型应用和API。 |
| | AltoRouter | 轻量级路由库,适合小型项目,易于配置。 |
| | Symfony Routing | Symfony的路由组件,适合复杂应用。 |
| [认证与授权] | OAuth2 Server PHP | 实现OAuth2协议的PHP库,适用于API认证。 |
| | JWT (JSON Web Token) | 轻量级身份验证方案,适合API认证。 |
| | PHP-Auth | 简单的用户认证库,适用于中小型Web应用。 |
| [支付集成] | Stripe PHP SDK | 集成Stripe支付功能,支持信用卡支付、订阅等。 |
| | PayPal SDK for PHP | 集成PayPal支付功能,支持支付、退款等。 |
| [邮件发送] | PHPMailer | 功能强大的邮件发送库,支持SMTP、POP3等协议。 |
| | SwiftMailer | 另一款流行的邮件发送库,支持多种邮件功能。 |
| | Mailgun PHP SDK | Mailgun的官方SDK,用于通过Mailgun API发送邮件。 |
| [文件管理] | Flysystem | 文件存储抽象库,支持多种存储方式(如本地、Amazon S3、FTP等)。 |
| | Symfony Filesystem | Symfony的文件系统组件,提供简单的文件操作API。 |
| | Intervention Image | 图片处理库,支持裁剪、调整大小、水印等功能。 |
| [缓存与性能] | Redis | 内存数据存储系统,用于缓存、消息队列等,提升性能。 |
| | Memcached | 内存缓存系统,适用于高并发应用。 |
| | Symfony Cache | Symfony缓存组件,支持多种缓存后端。 |
| | Laravel Cache | Laravel内置缓存系统,提升Web应用性能。 |
| [日志管理] | Monolog | 强大的日志库,支持多种日志渠道(如文件、数据库、邮件等)。 |
| | Log4PHP | Apache Log4j的PHP实现,适用于复杂日志功能。 |
| [任务队列] | Laravel Queue | Laravel内置队列系统,支持延迟任务、异步处理。 |
| | Resque | 基于Redis的任务队列库,适用于异步任务处理。 |
| | RabbitMQ | 开源消息代理服务,用于任务调度和消息传递。 |
| [WebSocket与实时通信] | Ratchet | 用于实现WebSocket服务,适合在线聊天、实时通信。 |
| | Swoole | 高性能协程框架,支持WebSocket、TCP、UDP等协议,适用于高并发实时应用。 |
| [测试与调试] | PHPUnit | PHP标准单元测试框架,广泛用于自动化测试。 |
| | Xdebug | PHP调试工具,支持堆栈跟踪、性能分析、断点调试等功能。 |
| [富文本编辑器] | KindEditor | 一个轻量级且功能丰富的富文本编辑器,支持图片上传、插入视频等,适用于PHP开发的Web项目。 |
| | TinyMCE | 开源的富文本编辑器,支持多种格式的文本编辑,插件丰富,易于集成。 |
| | CKEditor | 高度可定制的富文本编辑器,支持图片、文件上传、富文本格式化等功能,广泛用于Web项目中。 |
| | Froala Editor | 轻量级、现代的富文本编辑器,支持图像处理、视频嵌入、内嵌富文本等,适合复杂的Web应用。 |
| | Quill | 开源富文本编辑器,功能强大、轻量级,支持图片、视频、格式设置等功能,适合单页面应用。 |
| | Summernote | 基于jQuery的轻量级富文本编辑器,支持文本格式化、图片上传等,适合中小型Web项目。 |
| | Trumbowyg | 轻量级的富文本编辑器,功能简单但支持基本的文本编辑、图片上传、视频插入等。 |
| | Redactor | 现代的富文本编辑器,功能丰富,支持图片、文件上传等,适合多种Web应用。 |
| [图片上传组件] | Dropzone.js | 支持拖拽上传和多文件上传的JavaScript库,易于与PHP集成,常用于图片、文件上传功能。 |
| | FilePond | 高度可定制的文件上传库,支持图片预览、验证、上传进度等,适合需要精美上传功能的Web项目。 |
| | Fine Uploader | 支持多种文件上传方式的组件,支持多文件上传、拖拽上传,支持PHP处理后台。 |
| | Plupload | 支持多种文件上传方式(包括HTML5和Flash),可以与PHP后台集成,广泛用于Web应用中。 |
| [图片处理组件] | ImageMagick | 强大的图像处理库,支持图像格式转换、剪裁、旋转、加水印等多种功能,适用于PHP处理图像。 |
| | GD Library | PHP内置图像处理库,支持图像创建、缩放、裁剪、色调调整等功能。 |
| | Intervention Image | PHP图像处理库,支持裁剪、缩放、加水印等,易于与Laravel集成。 |

一、TP(thinkphp)框架-开发技术

参考:https://www.kancloud.cn/manual/thinkphp5/118003(thinkphp开发手册,学习此框架的语法)

前言了解MVC:

1、配置架构-导入使用

入口配置,数据库配置,调试开关等

2、路由访问-URL访问

URL访问模式,文件目录对应关系等

路由访问:

法一:http://192.168.1.2:92/index.php/admin/index/test?id=123124

可以通过此url地址,推断对应的文件目录为admin,方法为test,也可根据此特征,判断使用了MVC路由访问;

法二:http://192.168.1.2:92/index.php?s=admin/index/test

可以通过此url地址,推断对应的文件目录为admin,方法为test,也可根据此特征,判断使用了MVC路由访问;

3、请求变量-数据接受

请求对象,提交方法,助手函数等

4、数据库操作-应用对象

引用DB类,基本查询,助手函数等

数据库查询语句

5、前端页面渲染-MVC模型(Model模板+View视图+Control控制器)

引擎配置,渲染变量,模版输出等

二、TP框架-写法安全

1、thinkphp代码写法逻辑

例子1:自己不合规的代码写法

例子2:一半框架一半自写代码

例子3:框架标准内置代码写法

2、框架版本安全

https://github.com/Mochazz/ThinkPHP-Vuln

例子1:写法内置安全绕过-TP5-SQL注入

纯内置写法虽然没有常规的sql注入漏洞,但是也存在注入漏洞

例子2:内置版本安全漏洞-TP5-代码执行

如5.0.15版本和5.0.22版本存在的漏洞不一样

三、TP框架-代审案例:

WeMall-TP5框架开发(源码来源->站长之家)

补:

1、框架安全代码审计思路:

①学会框架的开发手册->即框架语法怎么写的->目标:看得懂框架代码

②在使用框架开发时->代码的写法(纯自己写的代码+一半自己写的代码/一半框架的写法+纯框架语法写法)->代码审计时,不同的代码写法会产生漏洞点

③如果是纯框架语法写法->判断/查询框架的版本->找该版本的历史漏洞->a、版本通杀直接利用即可+b、有点框架漏洞存在于框架的具体代码使用位置

2、简单挖掘框架漏洞的思路:

判断是什么框架->框架版本->历史漏洞->直接利用

相关推荐
Nan_Shu_6148 小时前
学习: Threejs (2)
前端·javascript·学习
G_G#8 小时前
纯前端js插件实现同一浏览器控制只允许打开一个标签,处理session变更问题
前端·javascript·浏览器标签页通信·只允许一个标签页
@大迁世界8 小时前
TypeScript 的本质并非类型,而是信任
开发语言·前端·javascript·typescript·ecmascript
GIS之路9 小时前
GDAL 实现矢量裁剪
前端·python·信息可视化
是一个Bug9 小时前
后端开发者视角的前端开发面试题清单(50道)
前端
Amumu121389 小时前
React面向组件编程
开发语言·前端·javascript
持续升级打怪中9 小时前
Vue3 中虚拟滚动与分页加载的实现原理与实践
前端·性能优化
GIS之路9 小时前
GDAL 实现矢量合并
前端
hxjhnct9 小时前
React useContext的缺陷
前端·react.js·前端框架
前端 贾公子9 小时前
从入门到实践:前端 Monorepo 工程化实战(4)
前端