第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()确保用户只传递一个参数给命令用户不能指定更多的参数一个用户不能执行不同的命令

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫学习前传 —— Python从安装到学会一站式服务

早上好啊&#xff0c;大佬们。我们的python基础内容的这一篇终于写好了&#xff0c;啪唧啪唧啪唧…… 说实话&#xff0c;这一篇确实写了很久&#xff0c;一方面是在忙其他几个专栏的内容&#xff0c;再加上生活学业上的事儿&#xff0c;确实精力有限&#xff0c;另一方面&…

【Flink系列】6. Flink中的时间和窗口

6. Flink中的时间和窗口 在批处理统计中&#xff0c;我们可以等待一批数据都到齐后&#xff0c;统一处理。但是在实时处理统计中&#xff0c;我们是来一条就得处理一条&#xff0c;那么我们怎么统计最近一段时间内的数据呢&#xff1f;引入“窗口”。 所谓的“窗口”&#xff…

《汽车维修技师》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答&#xff1a; 问&#xff1a;《汽车维修技师》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《汽车维修技师》级别&#xff1f; 答&#xff1a;省级。主管单位&#xff1a;北方联合出版传媒&#xff08;…

HTML中如何保留字符串的空白符和换行符号的效果

有个字符串 储值门店{{thing3.DATA}}\n储值卡号{{character_string1.DATA}}\n储值金额{{amount4.DATA}}\n当前余额{{amount5.DATA}}\n储值时间{{time2.DATA}} &#xff0c; HTML中想要保留 \n的换行效果的有下面3种方法&#xff1a; 1、style 中 设置 white-space: pre-lin…

Git在码云上的使用指南:从安装到推送远程仓库

目录 目录 前言&#xff1a; 1、git的安装 1.1.Linux-centos环境下安装 1.2.Linux-ubuntu环境下安装 2.创建Git本地仓库 3.配置Git 4.认识⼯作区、暂存区、版本库 5.添加文件 5.1.git命令 5.2.commit命令 6.远程操作 6.1.新建远程仓库 6.2.克隆远程仓库&#xff…

群论学习笔记

什么是对称&#xff1f; 对称是一个保持对象结构不变的变换&#xff0c;对称是一个过程&#xff0c;而不是一个具体的事物&#xff0c;伽罗瓦的对称是对方程根的置换&#xff0c;而一个置换就是对一系列事物的重排方式&#xff0c;严格的说&#xff0c;它也并不是这个重排本身…

联通用户管理系统(一)

#联通用户管理系统&#xff08;一&#xff09; 1.新建项目 如果你是windows的话&#xff0c;界面应该是如下的&#xff1a; 2.创建app python manage.py startapp app01一般情况下&#xff1a;我们是在pycharm的终端中运行上述指令&#xff0c;但是pychrm中为我们提供了工具…

.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)

系列文章目录 1、.Net Core微服务入门系列&#xff08;一&#xff09;——项目搭建 2、.Net Core微服务入门全纪录&#xff08;二&#xff09;——Consul-服务注册与发现&#xff08;上&#xff09; 3、.Net Core微服务入门全纪录&#xff08;三&#xff09;——Consul-服务注…

在 macOS 上,用命令行连接 MySQL(/usr/local/mysql/bin/mysql -u root -p)

根据你提供的文件内容&#xff0c;MySQL 的安装路径是 /usr/local/mysql。要直接使用 mysql 命令&#xff0c;你需要找到 mysql 可执行文件的路径。 在 macOS 上&#xff0c;mysql 客户端通常位于 MySQL 安装目录的 bin 子目录中。因此&#xff0c;完整的路径应该是&#xff1…

春秋杯-WEB

SSTI 可以看到主页那里有个登录测试之后为ssti {{4*4}} fenjing梭哈即可得到payload {{((g.pop.__globals__.__builtins__.__import__(os)).popen(cat flag)).read()}}file_copy 看到题目名字为file_copy&#xff0c; 当输入路径时会返回目标文件的大小&#xff0c; 通…

记录一次微信小程序使用云能力开发的过程

对于开发微信小程序云开发不知从何起的同学们&#xff0c;可以当作一次参考。虽说官方有文档&#xff0c;有模板示例&#xff0c;但是这些都是片段或者完整的结果展示。对于初学或者开发经验较少的同学们&#xff0c;可能不知先从那里入手进行第一步的开发。下面解析下构建微信…

doc、pdf转markdown

国外的一个网站可以&#xff1a; Convert A File Word, PDF, JPG Online 这个网站免费的&#xff0c;算是非常厚道了&#xff0c;但是大文件上传多了之后会扛不住 国内的一个网站也不错&#xff1a; TextIn-AI智能文档处理-图像处理技术-大模型加速器-在线免费体验 https://…

用 Python 自动化处理日常任务

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

el-timeline时间线(Plus)左边图标改为自定义图片

&#xff08;目前图片有点小&#xff0c;还需要自己去调整下大概样式&#xff0c;比较懒&#xff0c;就放了个大概样子&#xff09; 时间线左侧正常根据文档内容&#xff0c;是填写的icon&#xff0c;但通过icon属性还有另外一个类型&#xff0c;component&#xff0c;可以搭配…

SpringBoot:RestTemplate与IllegalArgumentException

问题描述 在SpringBoot应用中&#xff0c;有时会遇到使用RestTemplate调用第三方服务的场景。例如&#xff1a;在进行地名数据采集时&#xff0c;为了拿到地名对应的经纬度位置&#xff0c;通常会有地理编码的步骤&#xff0c;此时就可能涉及到调用第三方接口服务实现此需求。 …

PyTorch使用教程(6)一文讲清楚torch.nn和torch.nn.functional的区别

torch.nn 和 torch.nn.functional 在 PyTorch 中都是用于构建神经网络的重要组件&#xff0c;但它们在设计理念、使用方式和功能上存在一些显著的区别。以下是关于这两个模块的详细区别&#xff1a; 1. 继承方式与结构 torch.nn torch.nn 中的模块大多数是通过继承 torch.nn…

数字小偷:2025年全面防护指南

在今天的数字时代&#xff0c;金钱已不再局限于传统银行和实体店铺&#xff0c;而是转移到网上银行和电子商务平台上。而随着这一变化&#xff0c;网络犯罪也从现实世界的抢劫演变成了数字世界中的“数字扒窃”。这意味着&#xff0c;几乎每个商业实体&#xff0c;无论大小&…

RV1126+FFMPEG推流项目(6)视频码率及其码率控制方式

视频从采集到编码再到线程获取编码后的数据&#xff0c;已经全部说完。接下来继续来说应该比较重要的&#xff0c;和视频相关的。就是码率。 视频码率及其码率控制方式 一、什么是码率&#xff1f; 视频码率是指在单位时间内传输的视频数据量&#xff0c;通常以 kbps&#x…

python管理工具:conda部署+使用

python管理工具&#xff1a;conda部署使用 一、安装部署 1、 下载 - 官网下载&#xff1a; https://repo.anaconda.com/archive/index.html - wget方式&#xff1a; wget -c https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh2、 安装 在conda文件的…

深入理解 D3.js 力导向图:原理、调参与应用

目录 前言1. D3.js 力导向图的核心原理1.1 物理模拟与数值积分器1.2 力导向图的物理模型 2. D3.js 力导向图的主要调参项2.1 向心力&#xff08;d3.forceCenter&#xff09;2.2 碰撞检测&#xff08;d3.forceCollide&#xff09;2.3 弹簧力&#xff08;d3.forceLink&#xff09…