农业大数据平台如何利用umeditor插件实现Excel动态图表粘贴?
各位道友且听我这个江西老表用带着辣椒味的普通话讲讲如何在99元预算下给CMS系统加上Word一键粘贴功能顺便还能防黑客、防白嫖、防导师催稿一、技术方案白嫖防身版前端篇Vue2 UEditor魔改// 1. 修改ueditor.config.js解锁粘贴黑科技window.UEDITOR_CONFIG{...其他配置,pasteFilterStyle:false,// 关闭默认过滤保留Word样式toolbars:[[source,undo,redo,wordimage,pasteplain,|,customWordPaste,antiXSS]// 新增两个按钮]};// 2. 注册魔法按钮ueditor.all.js里添加UE.registerUI(customWordPaste,function(editor,uiName){constbtnnewUE.ui.Button({name:customWordPaste,title:Word一键粘贴防格式乱码,cssRules:background-position: -726px -77px;,onclick:function(){editor.execCommand(pasteFromWordWithSecurity);}});returnbtn;},10);// 3. 注入防身术前端XSS过滤UE.registerUI(antiXSS,function(editor){returnnewUE.ui.Button({name:antiXSS,title:防黑客模式,onclick:(){consthtmleditor.getContent();// 前端简单过滤实际要用DOMPurifyconstsafeHtmlhtml.replace(/.*?\/script/gi,);editor.setContent(safeHtml);}});});// 4. 核心粘贴逻辑需配合后端UE.commands[pasteFromWordWithSecurity]{execCommand:function(){document.addEventListener(paste,async(e){constitems(e.clipboardData||window.clipboardData).items;for(letitemofitems){if(item.type.includes(office)){constblobitem.getAsFile();constformDatanewFormData();formData.append(wordFile,blob);// 调用后端安全解析接口constresawaitfetch(/api/SecureWordParse,{method:POST,body:formData,headers:{X-Anti-CSRF:你的Token}// 防CSRF});const{html,ossUrls}awaitres.json();// 替换图片路径为OSS地址letfinalHtmlhtml.replace(/srctemp\//g,src${ossUrls.join(,)});this.execCommand(insertHtml,finalHtml);}}});}};后端篇ASP.NET WebForm 防身术// 1. Word解析接口SecureWordParse.ashxpublicclassSecureWordParse:IHttpHandler{publicvoidProcessRequest(HttpContextcontext){// 防SQL注入 防文件上传漏洞if(context.Request.Files.Count0||!context.Request.Files[0].FileName.EndsWith(.docx)){context.Response.Write({\error\:\非法文件\});return;}varfilecontext.Request.Files[0];vardocnewXWPFDocument(file.InputStream);// Apache POI// 防XSS提取纯文本 样式简化版varhtmlnewStringBuilder();foreach(varparaindoc.Paragraphs){// 过滤危险标签实际要用HtmlSanitizervartextHttpUtility.HtmlEncode(para.Text);html.AppendFormat({1},para.Style,text);}// 图片上传OSS防路径遍历varossUrlsnewList();foreach(varpicindoc.AllPictures){varsafeNameGuid.NewGuid()Path.GetExtension(pic.SuggestFileExtension());varossUrlOSSHelper.Upload(pic.Content,word_images/safeName);ossUrls.Add(ossUrl);}// 公式处理需调用MathType转换服务context.Response.ContentTypeapplication/json;context.Response.Write(JsonConvert.SerializeObject(new{htmlhtml.ToString(),ossUrlsossUrls}));}}// 2. OSS工具类防任意文件上传publicstaticclassOSSHelper{privatestaticreadonlystringendpointyour-oss-endpoint;privatestaticreadonlystringaccessKeyyour-access-key;privatestaticreadonlystringsecretKeyyour-secret-key;publicstaticstringUpload(byte[]data,stringpath){// 验证路径是否合法if(path.Contains(..)||path.Contains(//))thrownewArgumentException(非法路径);varclientnewOssClient(endpoint,accessKey,secretKey);using(varstreamnewMemoryStream(data)){varresultclient.PutObject(your-bucket,path,stream);returnresult.Uri.ToString();}}}二、暴富求职双修方案1. 代理系统防白嫖版// 订单处理逻辑防篡改publicdecimalCalculateCommission(decimalorderAmount,intagentLevel){varratesnewDictionary{{1,0.20m},// 普通代理20%{2,0.50m},// 黄金代理50%{3,0.80m}// 钻石代理做梦};// 防负数攻击if(orderAmount0||!rates.ContainsKey(agentLevel))return0;returnorderAmount*rates[agentLevel];}// 防刷接口[HttpPost]publicActionResultPlaceOrder(OrderModelmodel){// 防重复提交if(Session[LastOrderTime]!null(DateTime.Now-(DateTime)Session[LastOrderTime]).TotalSeconds5){returnJson(new{successfalse,msg操作太频繁});}Session[LastOrderTime]DateTime.Now;// 实际下单逻辑...}2. 简历防身术把代理系统写成**“基于ASP.NET的分布式佣金结算平台”**QQ群红包活动改成**“用户裂变增长运营”**面试时强调**“在99元预算下实现安全Word解析”**的极限优化能力三、生存指南网络安全版防黑指南所有上传文件用ClamAV扫描OSS路径用Guid随机生成防遍历公式转换用Docker隔离MathType服务求职秘籍群文件有**《如何把CMS系统包装成等保2.0合规产品》**每周五晚直播**“红队视角看CMS漏洞”**推荐工作送**《ASP.NET安全编码手册》**避坑指南阿里云OSS开启Bucket Policy防公开访问代理系统接口加IP白名单红包金额用非对称加密防篡改最后硬广正经版【网络安全互助群】223813913入群领**《99元安全开发指南》**每周分享等保测评漏洞案例群文件含UEditor防身版插件现在入群可参与**“推荐入职送RTX4060”**活动本群承诺不割韭菜只割黑客江西老表留“搞安全的人写代码要像做辣椒炒肉——火候要猛调料要足但别烧糊了锅”复制插件目录引入插件文件UEditor 1.4.3.3示例注意不要重复引入jquery如果您的项目已经引入了jq则不用再引入jq-1.4在工具栏中增加插件按钮//工具栏上的所有的功能按钮和下拉框可以在new编辑器的实例时选择自己需要的重新定义toolbars:[[fullscreen,source,|,zycapture,|,wordpaster,importwordtoimg,netpaster,wordimport,excelimport,pptimport,pdfimport,|,importword,exportword,importpdf]]初始化控件varposwindow.location.href.lastIndexOf(/);varapi[window.location.href.substr(0,pos1),asp/upload.asp].join();WordPaster.getInstance({//上传接口http://www.ncmem.com/doc/view.aspx?idd88b60a2b0204af1ba62fa66288203edPostUrl:api,//为图片地址增加域名http://www.ncmem.com/doc/view.aspx?id704cd302ebd346b486adf39cf4553936ImageUrl:,//设置文件字段名称http://www.ncmem.com/doc/view.aspx?idc3ad06c2ae31454cb418ceb2b8da7c45FileFieldName:file,//提取图片地址http://www.ncmem.com/doc/view.aspx?id07e3f323d22d4571ad213441ab8530d1ImageMatch:});//加载控件注意如果接口字段名称不是file请配置FileFieldName。ueditor接口中使用的upfile字段点击查看详细教程配置ImageMatch匹配图片地址如果服务器返回的是JSON则需要通过正则匹配ImageMatch:,点击参考链接配置ImageUrl为图片地址增加域名如果服务器返回的图片地址是相对路径可通过此属性添加自定义域名。ImageUrl:,点击查看详细教程配置SESSION如果接口有权限验证登陆验证SESSION验证请配置COOKIE。或取消权限验证。参考http://www.ncmem.com/doc/view.aspx?id8602DDBF62374D189725BF17367125F3效果编辑器界面导入Word文档,支持doc,docx导入Excel文档,支持xls,xlsx粘贴Word一键粘贴Word内容自动上传Word中的图片保留文字样式。Word转图片一键导入Word文件并将Word文件转换成图片上传到服务器中。导入PDF一键导入PDF文件并将PDF转换成图片上传到服务器中。导入PPT一键导入PPT文件并将PPT转换成图片上传到服务器中。上传网络图片下载示例点击下载完整示例
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2430655.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!