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、简单挖掘框架漏洞的思路:
判断是什么框架->框架版本->历史漏洞->直接利用