第34天:Web开发-PHP应用鉴别修复AI算法流量检测PHP.INI通用过滤内置函数

#知识点

1、安全开发-原生PHP-PHP.INI安全

2、安全开发-原生PHP-全局文件&单函数

3、安全开发-原生PHP-流量检测&AI算法

一、通用-PHP.INI设置

参考:

https://www.yisu.com/ask/28100386.html

https://blog.csdn.net/u014265398/article/details/109700309

https://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/23/2222105.html

安全模式 safe_mode ->命令执行函数会被禁用

*路径访问 open_basedir ->限制文件操作安全(遍历等)->可控制webshell后门查看到的路径,可以阻止后门遍历C盘、D盘

*禁用函数 disable_function ->升级版安全模式,自定义限制函数->可限制php一些常见的exec()等命令执行函数

*魔术引号转义 magic_quotes_gpc ->同理下面的sql过滤第一个函数Addslashes()->为了数据库查询语句等的需要在某些字符前加上了反斜线(进行转义)。这些字符是单引号()、双引号(”)、反斜线()与NULL字符)。

数据库访问次数 max_connections-> 防止数据库爆破

禁用远程执行 allow_url_include,allow_url_fopen->远程包含开关等

*安全会话管理 session.cookie_httponly session.cookie_secure->防止跨站脚本攻击(XSS)和中间人攻击(MITM)

二、引用-全局文件

1、关键内容检测(黑白名单)

文件上传,SQL注入,XSS跨站等

①文件上传黑名单过滤策略

文件上传白名单过滤策略

2、模仿流量检测(模仿WAF产品(基于规则或AI算法)

演示:Python Flask+PHP Curl+训练大模型

①客户端请求数据 -> 中间件搭建平台 -> 服务器代码文件处理

②客户端请求数据 -> WAF或流量监控 (规则,AI模型算法)-> 正常数据 -> 中间件搭建平台 -> 服务器代码文件处理

③客户端请求数据 -> WAF或流量监控 (规则,AI模型算法)-> 异常数据 -> 截止

a、常规设置规则进行检测:

python代码监测:在本地架设了一个服务,类似WAF产品(WAF或流量监控 (通过设置检测规则,黑名单白名单进行过滤))->数据会先到WAF(也就是此处的python脚本)->先检测一遍->如果数据正常->再传输到中间件平台(如apache)->再到服务器进行代码数据处理

输入xss攻击特征payload->被python检测到了

b、通过AI算法学习,生成检测

先通过样本,通过算法,提取特征,生成检测的pkl文件

开启python脚本检测本地5000端口->模拟WAF产品

输入xss攻击特征payload->被python检测到了

AI算法检测(于规则检测写法的区别)->在于通过样本自动学习->生成skl(用于检测攻击特征的文件)->进行规则检测过滤

这样的AI模型算法怎样写?->chatgpt

三、代码-内置函数

检测:数据的类型差异,数据的固定内容->针对类型和固定数据内容进行过滤->缺点在于过滤单一、有限->麻烦

gettype()获取变量的类型

is_float()检测变量是否是浮点型

is_bool()检测变量是否是布尔型

is_int()检测变量是否是整数

is_null()检测变量是否为NULL

is_numeric()检测变量是否为数字或数字字符串

is_object()检测变量是否是一个对象

is_resource()检测变量是否为资源类型

is_scalar()检测变量是否是一个标量

is_string()检测变量是否是字符串

is_array()检测变量是否是数组

filter_var()使用特定的过滤器过滤一个变量

FILTER_SANITIZE_STRING 过滤器可以过滤HTML标签和特殊字符

FILTER_SANITIZE_NUMBER_INT 过滤器可过滤非整数字符

FILTER_SANITIZE_URL 过滤器用于过滤URL中的非法字符

FILTER_VALIDATE_EMAIL 过滤器来验证电子邮件地址的有效性

四、SQL注入过滤:

1、Addslashes()返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线(进行转义)。这些字符是单引号()、双引号(”)、反斜线()与NULL字符)。

2、stripslashes()反引用一个引用字符串,如果magic_quotes_sybase项开启,反斜线将被去除,但是两个反斜线将会被替换成一个。

3、addcslashes()返回字符串,该字符串在属于参数charlist列表中的字符前都加上了反斜线。

4、stripcslashes()返回反转义后的字符串。可识别类似C语言的\n,r,…八进制以及十六进制的描述。

5、mysql_escape_string()此函数并不转义%和_。作用和mysql real escape_string()基本一样

6、mysql_real_escape_string()调用mysql库的函数在以下字符前添加反斜杠:x00、\n、\r、\、x1a

7、PHP魔术引号当打开时,所有的'(单引号),”(双引号),(反斜线)和NULL字符都会被自动加上一个反斜线进行转义。这和addslashes()作用完全相同。

8、预编译机制:提前固定一个模型(执行架构)不管sql注入传入的参数怎么构造,都是以固定的模型输出

演示:魔术引号<=>addslashes(),预编译等

补充:由于以上过滤sql注入方式单一,简单粗暴,我们可以采用配置sql注入过滤文件,集中多种过滤方式,提高效率,方便简洁

①写入过滤sql注入配置文件

②调用配置文件

③实操

五、XSS跨站过滤:

filter_var()使用特定的过滤器过滤一个变量

FILTER_SANITIZE_STRING 过滤器可以过滤HTML标签和特殊字符

1、htmlspecialchars()函数把预定义的字符转换为HTML实体

2、strip_tags()函数剥去字符串中的HTML、XML以及PHP的标签

补充:由于以上过滤xss方式单一,简单粗暴,我们可以采用配置xss过滤文件,集中多种过滤方式,提高效率,方便简洁

①写入过滤xss配置文件

②调用配置文件

③实操

六、命令执行过滤

escapeshellcmd()确保用户只执行一个命令用户可以指定不限数量的参数用户不能执行不同的命令

escapeshellarg()确保用户只传递一个参数给命令用户不能指定更多的参数一个用户不能执行不同的命令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/955491.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++多态的认识与理解

多态的定义 多态其实就是同一操作在不同的对象上可以有不同的实现方式。 多态的类型 多态分为静态多态和动态多态两种&#xff0c;而静态多态其实我们之前就了解过&#xff0c;今天主要是讲解一下动态多态。 静态多态&#xff08;编译时多态&#xff09;:静态多态其实就是在…

Ubuntu安装搜狗输入法

Ubuntu安装搜狗输入法 官网完整安装步骤调整默认输入法 官网 搜狗输入法 - 官网&#xff1a;https://shurufa.sogou.com/ 搜狗输入法Linux版 - 首页&#xff1a;https://shurufa.sogou.com/linux 搜狗输入法Linux版 - 安装指南&#xff1a;https://shurufa.sogou.com/linux/gu…

ElasticSearch下

DSL查询 叶子查询&#xff1a;在特定字段里查询特定值&#xff0c;属于简单查询&#xff0c;很少单独使用复合查询&#xff1a;以逻辑方式组合多个叶子查询或更改叶子查询的行为方式 在查询后还可以对查询结果做处理&#xff1a; 排序&#xff1a;按照1个或多个字段做排序分页…

【个人开发】nginx域名映射及ssl证书配置踩坑记录

1. 背景 买了个域名&#xff0c;申请了ssl证书&#xff0c;买都买了&#xff0c;不得部署点东西。于是开始一堆踩坑之旅。 2. 踩过的坑 2.1 报错1:域名访问 Invalid Host header 项目是一个简单的vue项目&#xff0c;启动方式如下 npm run serve但浏览器出现报错&#xff…

Go-Zero整合Goose实现MySQL数据库版本管理

推荐阅读 【系列好文】go-zero从入门到精通&#xff08;看了就会&#xff09; 教程地址&#xff1a;https://blog.csdn.net/u011019141/article/details/139619172 Go-Zero整合Goose实现MySQL数据库版本管理的教程 在开发中&#xff0c;数据库迁移和版本管理是必不可少的工作。…

每日一题洛谷P1427 小鱼的数字游戏c++

#include<iostream> using namespace std; int main() {long long s[100] { 0 };int i 0;while (1) {cin >> s[i];if (s[i]0) {break;}i;}for (i; i > 0;i--) {if(s[i]!0)cout << s[i] << " ";}return 0; }

力扣 子集

回溯基础&#xff0c;一题多解&#xff0c;不同的回朔过程。 题目 求子集中&#xff0c;数组的每种元素有选与不选两种状态。因此在使用dfs与回溯时把每一个元素分别进行选与不选的情况考虑即可。可以先用dfs跳过当前元素即不选然后一直深层挖下去&#xff0c;直到挖到最深了即…

宇泰串口卡驱动在Ubuntu22.04编译、安装汇总

从官网下载驱动官网地址 上传到Ubuntu, 目录结构如下&#xff1a; 驱动源代码: 驱动代码是基于开源项目编译来的 编译路径不能有中文路径&#xff0c;否则可能有类似错误 源码是基于Linux2.3内核编译&#xff0c;我当前是6.8.0-51&#xff0c;数据结构有升级&#xff0c;需要调…

LSA更新、撤销

LSA的新旧判断&#xff1a; 1.seq&#xff0c;值越大越优先 2.chksum&#xff0c;值越大越优先 3.age&#xff0c;本地的LSA age和收到的LSA age作比较 如果差值<900s&#xff0c;认为age一致&#xff0c;保留本地的&#xff1a;我本地有一条LSA是100 你给的是400 差值小于…

运行fastGPT 第四步 配置ONE API 添加模型

上次已经装好了所有的依赖和程序。 下面在网页中配置One API &#xff0c;这个是大模型的接口。配置好了之后&#xff0c;就可以配置fastGPT了。 打开 OneAPI 页面 添加模型 这里要添加具体的付费模型的API接口填进来。 可以通过ip:3001访问OneAPI后台&#xff0c;**默认账号…

强化学习-蒙特卡洛方法

强化学习-数学理论 强化学习-基本概念强化学习-贝尔曼公式强化学习-贝尔曼最优公式强化学习-值迭代与策略迭代强化学习-蒙特卡洛方法 文章目录 强化学习-数学理论一、蒙特卡洛方法理论(Monte Carlo, MC)二、MC Basic2.1 算法拆解2.2 MC Basic算法 三、MC Exploring Starts3.1 …

【专题一 递归】21. 合并两个有序链表

1.题目解析 2.讲解算法原理 解法:递归-> 重复的子问题 重复子问题 ->函数头的设计 合并两个有序链表--->Node dfs(l1&#xff0c;l2) 只关心某一个子问题在做什么事情 ->函数体的设计 比大小l1→next dfs( l1.next, l2)return l1 递归的出口 if(l1null)return l2…

企业级NoSQL数据库Redis

1.浏览器缓存过期机制 1.1 最后修改时间 last-modified 浏览器缓存机制是优化网页加载速度和减少服务器负载的重要手段。以下是关于浏览器缓存过期机制、Last-Modified 和 ETag 的详细讲解: 一、Last-Modified 头部 定义:Last-Modified 表示服务器上资源的最后修改时间。 作…

FPGA车牌识别

基于FPGA的车牌识别主要包含以下几个步骤&#xff1a;图像采集、颜色空间转换、边缘检测、形态学处理&#xff08;腐蚀和膨胀&#xff09;、特征值提取、模板匹配、结果显示。先用matlab对原理进行仿真&#xff0c;后用vivado和modelsim进行设计和仿真。 一、1.图像采集采用ov…

客户案例:致远OA与携程商旅集成方案

一、前言 本项目原型客户公司创建于1992年,主要生产并销售包括糖果系列、巧克力系列、烘焙系列、卤制品系列4大类,200多款产品。公司具有行业领先的生产能力,拥有各类生产线100条,年产能超过10万吨。同时,经过30年的发展,公司积累了完善的销售网络,核心经销商已经超过1200个,超…

怎么修复损坏的U盘?而且不用格式化的方式!

当你插入U盘时&#xff0c;若电脑弹出“需要格式化才能使用”提示&#xff0c;且无法打开或读取其中的数据&#xff0c;说明U盘极有可能已经损坏。除此之外&#xff0c;若电脑在连接U盘后显示以下信息&#xff0c;也可能意味着U盘出现问题&#xff0c;需要修复损坏的U盘&#x…

贪心算法(题1)区间选点

输出 2 #include <iostream> #include<algorithm>using namespace std;const int N 100010 ;int n; struct Range {int l,r;bool operator <(const Range &W)const{return r<W.r;} }range[N];int main() {scanf("%d",&n);for(int i0;i&l…

2.使用Spring BootSpring AI快速构建AI应用程序

Spring AI 是基于 Spring Boot3.x 框架构建&#xff0c;Spring Boot官方提供了非常便捷的工具Spring Initializr帮助开发者快速的搭建Spring Boot应用程序,IDEA也集成了此工具。本文使用的开发工具IDEASpring Boot 3.4Spring AI 1.0.0-SNAPSHOTMaven。 1.创建Spring Boot项目 …

【Linux】Socket编程-TCP构建自己的C++服务器

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; Socket 编程 TCP &#x1f98b; TCP socket API 详解&#x1f98b; 多线程远程命令执行&#x1f98b; 网络版计算器&#xff08;应用层自定义协议与序列化…

森林网络部署,工业4G路由器实现林区组网远程监控

在广袤无垠的林区&#xff0c;每一片树叶的摇曳、每一丝空气的流动&#xff0c;都关乎着生态的平衡与安宁。林区监控正以强大的力量&#xff0c;为这片绿色家园筑起一道坚固的防线。 工业 4G 路由器作为林区监控组网的守护者&#xff0c;凭借着卓越的通讯性能&#xff0c;突破…