点击不同位置实现同一个文件上传框上传头像

文件上传漏洞详解 文件上传漏洞详解 什么是文件上传 什么是文件上传漏洞 文件上传漏洞的原理 文件上传漏洞需满足的条件 文件上传漏洞产生的原因 上传漏洞绕过 1.客服端绕过 2.服务端绕过 3.白名单绕过 文件上传的防御方式 1.客户端(前端js检测) 2.服务端(后端PHP过滤)... 阅读详情

因需求增加,需要点击如下文字上传头像

如下图:

原本是点击头像,可以上传头像,头像下面是个  fiel类型的 input 标签, 点击可以选取图片上传,

需求增加,要点击蓝色文字那里,也要可以实现头像上传。

头像上传的 HTML代码:

<div class="upload-picture">
          <p>
            <span><img src="${ctx }/resources/img/min/people1.jpg" id="uers_portrait" ></span>
            <i></i>
            <b><img src="${ctx }/resources/img/min/upload-certifi.png" >
                <input type="file" size="30" id="portrait_upload_file" onchange="portrait_upload();" name="portrait_upload_file"
                accept="text/xml,text/xml-external-parsed-entity,application/vnd.ms-excel,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
            </b>
          </p>
         <em>修改头像<input type="file" size="30"></em>
          <div class="input-tips margin-l12 hide-wanring" id="result-Prompt" style="display:none;"></div>
          <p class="v-tips">支持JPG、JPEG、PNG、GIF
            格式,最佳比例124*124px,
            图片大小不超过500k</p>
  </div>

 

js 代码 :

/**
 * 头像上传
 */
function portrait_upload() {
     var file = $("#portrait_upload_file").val();
    if (checkNull(file)) {
        showWarning("请选择上传的文件!");
        return false;
    }
    if (!checkMaxSize("portrait_upload_file", 200*1024)) {
        return false;
    }
    var filepath = file.substring(file.lastIndexOf('.') + 1, file.length).toLocaleLowerCase();
    if (filepath != 'png' && filepath != 'jpg' && filepath != 'jpeg') {
        showWarning("只能上传png、jpg或jpeg格式的文件!");
        return false;
    }
    $.ajaxFileUpload({
        type : 'POST',
        url : WEB_URL + "/views/system/user/uploadPortrait", // ajax请求url
        secureuri : false,
        dataType: 'text', //返回值类型 一般设置为json
        fileElementId : 'portrait_upload_file', // 文件选择框的id属性
        complete : function(data, status) { // 相当于java中try语句块的用法
            try {
                var data = data.responseText;
                if (data.indexOf(">") != -1){
                data = data.substring(data.indexOf(">") + 1, data.lastIndexOf("<"));
                }
                data = eval("(" + data + ")");
                if (data.status != SUCCESS) {
                if(data.msg && data.msg != "") {
                    $("#result-Prompt").html(data.msg);
                    $("#result-Prompt").show();
                }else {
                    $("#result-Prompt").html("上传失败");
                    $("#result-Prompt").show();
                }
                }else {
                readPortrait();
                 $("#result-Prompt").html("上传成功");
                 $("#result-Prompt").show();
                }
            } catch(e) {
                $("#result-Prompt").html("上传失败");
                $("#result-Prompt").show();
            }
        }
    });
}

思路:本来是想让两个input标签的点击事件都绑定到同一个方法上(portrait_upload();),上传的都是 头像input标签浏览的图片,后来是不行的,

后面改变了一下思路,不管点击的是哪里,上传的都是头像input标签浏览的图片, 就是说:在点击“修改头像” 的文字的事件上,绑定一个方法,方法里的内容,就模拟头像input标签被点击了

如下代码:

function(){
        $("#portrait_upload_file").get(0).click();
    }

 

最后的实现,因为一直上传头像都只用了一个input标签,,另一个都没有什么实际用处,我把input标签改为了a标签,因为a标签有下划线,通过样式把下划线取消了(text-decoration:none;),就完美解决了

头像上传的 HTML代码:

        <div class="upload-picture">
          <p>
            <span><img src="${ctx }/resources/img/min/people1.jpg" id="uers_portrait" ></span>
            <i></i>
            <b><img src="${ctx }/resources/img/min/upload-certifi.png" >
                <input type="file" size="30" id="portrait_upload_file" onchange="portrait_upload();" name="portrait_upload_file"
                accept="text/xml,text/xml-external-parsed-entity,application/vnd.ms-excel,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
            </b>
          </p>
             <em><a id="portrait_file_upload_a" style="text-decoration:none;" >修改头像</a></em>
       <!-- <em>修改头像<input type="file" size="30"></em> -->
          <div class="input-tips margin-l12 hide-wanring" id="result-Prompt" style="display:none;"></div>
          <p class="v-tips">支持JPG、JPEG、PNG、GIF
            格式,最佳比例124*124px,
            图片大小不超过500k</p>
        </div>

js 代码 增加了如下代码:

$(document).ready(function(){
    
    $("#portrait_file_upload_a").click(function(){
        $("#portrait_upload_file").get(0).click();
    });
 } 

用id选取a标签,点击事件绑定了一个function,function的内容就是,当点击了a标签的时候就会通过JS动态去点击一次头像上传的input标签,然后input标签就能拿到浏览的图片了。

从用户头像上传功能挖掘CSRF漏洞:实战思路与绕过技巧 跨站请求伪造(CSRF)是一种常见的Web安全漏洞,攻击者利用用户已登录的会话状态,诱导其执行非预期的操作。其核心原理在于浏览器会自动携带Cookie等认证信息发起请求,而服务端若未校验请求来源的合法性,便会执行该操作。这项技术的价值在于,它能够以极低的成本实现对用户账户的未授权操作,危害性不容小觑。在应用场景上,除了支付、改密等核心功能,诸如用户头像上传、个人资料修改等看似次要的交互点,由于开发者的安全优先级错位,往往成为CSRF漏洞的“富矿”。本文将以“头像上传”这一典型场景为切入点,深入剖析其请求特征 阅读详情

相关推荐

渐变头像合成网站PHP源码

渐变头像合成网站PHP源码基于PHP技术开发,提供167种渐变框样式,支持用户上传头像一键生成个性化头像。核心功能包括文件上传验证、图片合成(GD库/Imagick)、水印管理(可开关)和响应式前端交互。技术亮点涵盖PHP后端处理、HTML5实时预览及动态加载素材。适用于个人社交头像定制或企业品牌推广,源码开源可二次开发。局限性在于需服务器支持PHP环境,未集成AI智能推荐等高级功能。

专注于与编程相关的知识内容分享 401

使用input上传头像

【代码】使用input上传头像。

m0_56175362的博客 589

构建ASP.NET头像上传与图像处理功能

简介:在ASP.NET应用中实现用户头像上传,包含自由剪切、缩放以及预览功能,需要掌握文件上传、图像处理和前端交互等关键技术。本文将详细阐述如何综合应用HTML、JavaScript、C#等技术,实现一个交互性良好的头像上传页面,并强调安全性和用户体验的重要性。

weixin_33660045的博客 938

HTML inputFile实现头像上传

C#结合HTML实现图片上传 效果预览 HTML <table> <tr> <td rowspan="5" style="background:#ffffff"> <div style="height:140px;width:140px;border-radius:50px;text-align:center;margin:0 auto;">

qq_41533659的博客 1200

给你的头像加个口罩网站HTML源码解析

“给你的头像加个口罩网站HTML源码”是一款基于HTML、CSS和JavaScript开发的静态网页模板,允许用户通过简单的操作为头像添加口罩图案。该源码无需依赖后端服务器或数据库,用户只需上传自己的头像图片,即可快速生成带有口罩的个性化头像。

专注于与编程相关的知识内容分享 269

Java实现文件上传功能详解与实战

Apache Commons IO 提供了多个实用类,其中最常用的包括:类名功能说明FileUtils提供静态方法用于文件复制、移动、删除等操作IOUtils提供流之间的复制、关闭等操作提供文件名处理方法,如获取扩展名、路径拼接等提供文件过滤器的构建方法例如,使用FileUtils将一个文件复制到另一个位置:try {System.out.println("文件复制成功");

weixin_42160645的博客 957

html 头像选择,html5点击上传头像选取本地图片上传代码

特效描述:html5 点击上传头像 选取本地图片 上传代码。html5点击上传头像,图片上传代码代码结构1. HTML代码上传头像//获取上传按钮var input1 = document.getElementById("upload");if(typeof FileReader==='undefined'){//result.innerHTML = "抱歉,你的浏览器不支持 FileReader...

weixin_33389398的博客 1085

jQuery点击头像上传本地预览裁剪图片

使用jquery上传前,预览图片,裁剪,示例使用php接收上传的文件,并且保存为裁剪后的图片。不需要上传后再裁剪图片,只需要本地裁剪好即可,裁剪的时候也可以旋转图片。

点击头像按钮实现图片上传并预览

背景 手机添加通讯录时,希望实现点击图片上传头像,这里主要包含两个功能 将上传图片的input按钮替换为指定图片,点击图片是触发input的上传事件。 图片上传后预览。 效果预览 点击 点击灰色头像,打开相机或者相册。上传完后效果如下 实现 step1 实现图片按钮 <div class="aui-info"> <img src="imgs/txbk.p...

kouryoushine的博客 1万+

html5点击上传头像选取本地图片上传代码

html5点击上传头像选取本地图片上传代码 html5点击上传头像选取本地图片上传代码

从零开始:MTK ISP调试中的ImagiqSimulator实战指南

本文详细介绍了MTK ISP调试中ImagiqSimulator的实战应用,从环境准备、参数加载到核心模块调整,提供全面的调试流程指南。重点讲解了DM模块参数优化技巧和常见问题解决方案,帮助工程师高效完成ISP调试工作,提升图像处理质量。

weixin_29168813的博客 486

vue点击头像上传图片

写毕设遇到个头像上传的问题要求:点击图片选择文件,并显示在头像框里 首先给图片添加点击事件 <el-avatar @click.native="upStart" :src="userDetail.upAva.url " :size="50" /> 方法如下 upStart() { //创建input const upload = document.createElement("input"); //设置type为file upload.

ZuoZuoDangerou的博客 2062

在Ubuntu 22.04上从零搭建TrinityCore 3.3.5服务器:一份保姆级避坑指南

本文详细介绍了在Ubuntu 22.04系统上从零搭建TrinityCore 3.3.5服务器的完整流程,包括环境准备、源码编译、数据库配置、资源文件处理及性能调优等关键步骤。特别针对国内开发者和低配置用户优化,提供保姆级避坑指南,帮助用户高效搭建魔兽世界经典旧世版本私服。

weixin_33393017的博客 304

用户头像的上传以及前端回显

在开发中,头像上传是一个非常基本的需求,那么如何去完成这个需求呢?本文将从前端到后端完整的讲述设计过程。

programmerCy的博客 5174

告别“单打独斗”:Oh My Open Code 如何用多模型协作重塑 AI 编程范式

介绍"Oh My OpenCode"——一个能协调多个专业AI模型完成复杂开发任务的智能编程框架。您将看到它如何分配任务、发挥不同模型的独特优势,并通过并行处理和实时纠错等功能解决AI编程流程中的常见痛点。

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 4211

Pytorch学习笔记(III)——提取特征

目录一、引言二、具体步骤1、参数模型2、网络结构3、参数载入4、特征提取器5、读取图片三、完整代码 一、引言   深度学习在许多任务中主要充当着特征学习的作用,而学习完的特征才是后续应用的一个关键。本文将主要介绍,如何提取任意目标层的特征图。   本文以输入数据为图片为例。 二、具体步骤 1、参数模型 博主使用了ResNet50训练了一个人脸识别的网络   训练完成的深度学习模型,我们会保存一...

lockonlxf的博客 2643

用户编辑基本信息时的上传头像功能实现

一、编辑基本信息页面有“点击上传头像”和“提交”两个submit,需要设置不同的action 方法:在两个submit按钮的onclick事件处理过程中修改表单action属性,变更提交地址 具体实现代码: <s:form action="" method="post" enctype="multipart/form-data"> <s:submit value="点击上传头像...

lyy0331的博客 2686

别再只调OpenCV参数了!手把手教你用Python bm3d库搞定图像去噪(附完整代码与效果对比)

本文详细介绍了BM3D算法在图像去噪中的高级应用,通过Python bm3d库实现超越OpenCV传统方法的去噪效果。文章包含完整代码示例、参数调优技巧及工程化应用场景,帮助开发者掌握这一被称为'传统方法天花板'的技术,显著提升图像信噪比和细节保留能力。

weixin_28362173的博客 366

OSS实现文件上传

OSS通过使用AccessKeyId和AccessKeySecret对称加密的方法来验证某个请求发送者的身份。AccessKeyId用来标识用户,AccessKeySecret用于加密签名字符串和OSS用来验证签名字符串的密钥,AccessKeySecret必须保密。OSS以HTTP RESTful API的形式对外提供服务,当访问不同地域的时候,需要不同的域名。用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。对象是 OSS 存储数据的基本单元,也被称为OSS的文件。

Kristabo的博客 2136

Unity 代码混淆<混淆插件(Obfuscator Pro 3.9.4)>

Unity 代码混淆<混淆插件(Obfuscator Pro 3.9.4)> 插件导入项目 导入后打开OPS/Obfuscator/Obfuscator Pro Settings 打开后可以看到界面如下 可以在上面界面中选择你需要混淆的类,方法,字段,属性,事件,参数。需要混淆的程序集的选择。如果有些程序集混淆后会有问题也可以添加到白名单里不被混淆 根据自己需求取选择 这个界面是是否添加添加随机代码的 如果使用了上面的插件可以使用 插件下载网址:https://download.cs

Xing_Cheng_Yun的博客 5100

Vue3 - 详细实现虚拟列表前端虚拟滚动列表解决方案,vue3长列表优化之虚拟列表,解决列表动态高度不固定高度及图片视频图文异步请求加载问题,虚拟列表DOM大量数据同时加载渲染卡顿太慢及下滑列表闪烁

vue3,vue3虚拟列表,用vue3实现一个虚拟列表,长列表高度不一致如何实现虚拟滚动加载列表,虚拟列表有图片视频,图文列表,上万条数据同时渲染解决,长列表dom渲染太卡,列表滚动条加载超多数据,瀑布流,在Vue3中如何实现列表的虚拟滚动,虚拟列表滑动白屏闪烁闪一下,虚拟列表每个项的高度不确定,可动态改变高度,vue3虚拟滚动列表,页面数据太多加载很慢怎么办,vue3实现不定高的虚拟列表,定高和不定高,虚拟列表非固定高度,vue3长列表优化之虚拟列表实现,vue3虚拟列表高度不固定,用vue3实现一个虚拟

🏆 前端领域优质创作者 1万+

通过原生表单或ajax,实现node文件上传

通过原生表单或ajax,实现node文件上传

weixin_45672865的博客 629

高频注入是否需要对齐和强拖操作?

高频注入技术显著优化了传统FOC启动流程,但仍需部分对齐操作。传统启动必须包含位置检测、对齐和强拖等步骤,而高频注入可实现零速闭环,简化或跳过部分环节。高频注入下的对齐主要用于验证有效性、初始化观测器和建立初始磁链,形式可大幅简化。虽然高频注入基本消除了传统强拖需求,但在重载、弱凸极等特殊情况下仍需辅助。实际应用中可采用自适应混合策略,根据负载和电机类型选择最优启动方案。高频注入使对齐和强拖从"必须"变为"可选优化项",是无传感器控制的重要进步。

汽车软件开发 204

javaweb VUE+ElementUI 文件上传 后端部分

1文件上传 在很多业务场景,用户都需要上传头像、证件照以及其他文件。 文件上传就是用户通过浏览器选择需要上传的文件并将文件传输至网站服务器上的一个过程 文件上传需要对请求中传的的文件流进行解析,一般会使用第三方jar包对文件流进行解析 1.1 实现步骤 文件上传不同于常见的form表单数据提交,后端servlet不能直接从HttpServletRequest中取到文件,需要进一步解析请求头。 直接对request使用getParameter提取数据什么也取不到,要借助第三方jar包...

BRSblackshoot的博客 1214

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【node进阶】Express+Multer+Postman模拟文件上传功能

Multer 是一个 node.js 中间件,用于处理 `multipart/form-data` 类型的表单数据,它主要用于上传文件。注意: Multer `不会处理任何非 multipart/form-data 类型的表单数据`。文件上传不同于我们传给后端普通的键值对,一般情况下我们所传的类型是`x-www-form-urlencoded`,但是`官方规定文件上传`的类型是`multipart/form-data`,我们如果自己去处理`multipart/form-data`类型的数据时...

前端小白在前进的博客 4094

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: 如何去掉a标签的下划线
下一篇: 判断是否是IE浏览器
heganlin
博客等级 码龄11年 3粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值