xss靶场和upload靶场中php函数防御手段
xss函数用途$str2 str_replace(, , $str); // 删除所有 $str3 str_replace(, , $str2); // 删除所有 str_replace()移除用户输入中的所有和字符$str2 str_replace(script, scr_ipt, $str);$str3 str_replace(on, o_n, $str2);str_replace():str_replace()是全局替换会替换所有匹配的字符串 过滤script标签 过滤事件处理器中的onecho h2 aligncenter没有找到和.htmlspecialchars($str).相关的结果./h2htmlspecialchars():对原始输入$str进行HTML实体编码后输出到h2标签if(false strpos($str7, http://));strpos():检查$str7中是否包含http://查找字符串中某子串第一次出现的位置setcookie(user, call me maybe?, time()3600);setcookie():设置名为user的Cookie值为call me maybe?有效期为1小时$str11 $_COOKIE[user];$_COOKIE:获取名为user的Cookie值文件上传函数用途if (isset($_POST[submit])) {**isset()**检查表单是否通过POST方式提交if (file_exists(UPLOAD_PATH)) {**file_exists()**检查文件或目录是否存在$temp_file $_FILES[upload_file][tmp_name];获取临时文件路径if (($_FILES[upload_file][type] image/jpeg) ||($_FILES[upload_file][type] image/png) ||($_FILES[upload_file][type] image/gif)) {**$_FILESIO()**检查上传文件的 MIME 类型是否为图片格式$img_path UPLOAD_PATH . / . $_FILES[upload_file][name];获取原始文件名if (move_uploaded_file($temp_file, $img_path)) {$is_upload true;} else {$msg 上传出错;}**move_uploaded_file():**将临时文件$temp_file移动到目标路径$img_path$file_name trim($_FILES[upload_file][name]);**trim():**去除文件名首尾的空白字符$file_name deldot($file_name);**deldot():**删除文件名末尾的点号$file_ext strrchr($file_name, .);**strrchr():**提取文件扩展名包括点号从最后一个点号开始截取处理文件名中有多个点的情况$file_ext strtolower($file_ext);**strtolower()**将扩展名统一转为小写 防止大小写绕过$file_ext str_ireplace(::$DATA, , $file_ext);**str_ireplace():**去除扩展名中的::$DATA字符串if(!in_array($file_ext, $deny_ext)) {**in_array():**检查某个值是否在数组中存在检查文件扩展名是否在黑名单中$img_path UPLOAD_PATH./.date(YmdHis).rand(1000,9999).$file_ext;**date():**生成带时间戳的文件名$file fopen($filename, rb);**fopen():**以二进制只读方式打开上传的临时文件$bin fread($file, 2);**fread():**从文件开头读取2个字节16位的二进制数据fclose($file);**fclose():**关闭之前打开的文件释放系统资源$strInfo unpack(C2chars, $bin);**unpack():**将2字节的二进制数据解包为2个无符号字符$typeCode intval($strInfo[chars1].$strInfo[chars2]);**intva():**获取变量的整数值将两个字节的值拼接为整数if(stripos($types, $ext) 0){**stripos():**检查文件扩展名是否在允许的类型列表中$info getimagesize($filename);**getimagesize():**获取图像文件的大小、类型等信息一个安全的文件上传功能就像机场安检需要一步步检查不能跳过任何环节。flowchart TD A[开始上传] -- B{表单提交检查brisset($_POST[submit])} B -- 未提交 -- Z[结束] B -- 已提交 -- C{目录存在检查brfile_exists} C -- 否 -- Z C -- 是 -- D{文件类型检查br检查 MIME 或扩展名} D -- 不通过 -- Z D -- 通过 -- E[读取临时文件br$_FILES[tmp_name]] E -- F{文件内容头验证br读取二进制头, getimagesize} F -- 不通过 -- Z F -- 通过 -- G[生成安全文件名brdate 随机数] G -- H[移动文件到目标目录brmove_uploaded_file] H -- I[上传成功]发起与检查安检入口isset($_POST[submit])确认用户是按了“提交”按钮而不是直接访问URL。file_exists()确保我们的“仓库”上传目录是存在的。客户端初步过滤第一道闸门$_FILES[upload_file][type]in_array()检查浏览器声称的文件类型MIME是不是图片。注意这个很容易伪造只是第一道简单过滤。服务端深度验证核心扫描$temp_file $_FILES[upload_file][tmp_name]拿到文件在服务器上的临时存放路径。fopen(),fread(),unpack(),getimagesize()这是关键它们直接读取文件的二进制内容验证它是不是真正的图片防止攻击者伪造文件头。strrchr(),strtolower(),str_ireplace(),in_array()处理文件名提取并检查扩展名如.jpg转小写并移除::$DATA这类特殊字符防止绕过。安全存储与完成入库登记trim(),deldot()清理文件名。date()rand()最佳实践不使用用户提供的原始文件名而是自己生成一个“新名字”如时间戳随机数避免文件名冲突和恶意利用。move_uploaded_file()将临时文件正式移动到我们指定的安全目录。

相关新闻

告别网盘限速:九大网盘直链下载助手终极指南

告别网盘限速:九大网盘直链下载助手终极指南

告别网盘限速:九大网盘直链下载助手终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅…

2026/9/24 19:17:23 阅读更多 →
如何用Awesome-AI-Apps构建企业级竞争情报平台:RAG应用实战

如何用Awesome-AI-Apps构建企业级竞争情报平台:RAG应用实战

如何用Awesome-AI-Apps构建企业级竞争情报平台:RAG应用实战 【免费下载链接】awesome-ai-apps A curated collection of awesome AI Agents and LLM Apps built with multiple tech stacks, showcasing real-world implementations using OpenAI, Gemini, local mod…

2026/9/24 19:17:23 阅读更多 →
3分钟快速上手:Whisky让macOS变身Windows应用全能工作站

3分钟快速上手:Whisky让macOS变身Windows应用全能工作站

3分钟快速上手:Whisky让macOS变身Windows应用全能工作站 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 还在为Mac无法运行Windows专属软件而烦恼吗?Whisky是…

2026/9/24 20:06:56 阅读更多 →

最新新闻

飞书项目主数据同步插件实战:一处维护枚举,自动同步到多个空间

飞书项目主数据同步插件实战:一处维护枚举,自动同步到多个空间

企业用飞书项目做多空间协作时,常踩一个隐蔽的坑:下拉字段口径对不齐。项目类型、优先级、客户行业、合同状态……这些枚举一旦要跨空间统计,各有一套版本就全乱了。飞书项目主数据同步插件由北京高远科技开发、作为飞书项目插件运行&#xf…

2026/9/25 20:44:49 阅读更多 →
linux firewalld 查看防火墙规则

linux firewalld 查看防火墙规则

firewall-cmd --list-all #查看防火墙规则(只显示/etc/firewalld/zones/public.xml中防火墙策略) firewall-cmd --list-all-zones #查看所有的防火墙策略(即显示/etc/firewalld/zones/下的所有策略) firewall-cmd --reload #重新加…

2026/9/25 20:44:49 阅读更多 →
你的好评正在被算法当成水军?4类“高危好评“自查清单

你的好评正在被算法当成水军?4类“高危好评“自查清单

你花了半年攒了500条好评,一夜之间全被折叠了。平台通知你"涉嫌刷量",限流、降权、搜索沉底。你喊冤:这些全是真实客户!但算法不听解释。这就是今天要聊的"水军误判"问题。平台打击水军越来越狠,但…

2026/9/25 20:44:49 阅读更多 →
机器学习倒逼芯片设计:后摩尔时代的专用架构与工程落地

机器学习倒逼芯片设计:后摩尔时代的专用架构与工程落地

1. 从一篇论文说起:机器学习怎么就成了芯片设计的“甲方”第一次看到“机器学习倒逼芯片设计”这个说法,我的反应是:终于有人把这件事摆到台面上了。过去十几年,做硬件的人习惯了一个节奏——摩尔定律每十八到二十四个月推进一步&…

2026/9/25 20:44:49 阅读更多 →
不再单机孤军作战!机器人开启多机协同作业|富唯智能

不再单机孤军作战!机器人开启多机协同作业|富唯智能

异构机器人协同:复合机器人与工业人形机器人如何统一调度? 随着智能制造进入柔性生产阶段,工厂中的机器人正在从“单机自动化”向“多机器人协同”升级。复合机器人、AMR、工业人形机器人等不同类型设备同时进入产线后,如何实现异…

2026/9/25 20:44:48 阅读更多 →
华为Atlas 300V 24G AI推理加速卡解析与YOLO部署实践

华为Atlas 300V 24G AI推理加速卡解析与YOLO部署实践

“Atlas 300V 24G 是运算加速卡吗?”这个问题,我在后台和技术群里看到过不下五六次。能理解,名字里带个V、宣传材料里又老提“视频分析”,很多人第一反应是“这难道是块视频采集卡、转码卡”,压根没往“跑深度学习模型…

2026/9/25 20:43:48 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/25 19:27:14 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/25 11:15:26 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/25 20:29:09 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/25 20:29:43 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/25 20:29:31 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/25 19:27:26 阅读更多 →