网站开发的流程是怎样的,编程语言,android下载安装官方免费下载,个人网站备案不通过版本信息
操作系统版本#xff1a;win11nodejs#xff1a;v14.16.0
场景#xff1a;
接收了base64格式数据字符串#xff08;data:*/*;base64,xxxxxx就是这种样式的#xff09;#xff1b;要将其存储于本地。将字符串,号后的字符串转二进制写入本地。内容各种的都获取…版本信息
操作系统版本win11nodejsv14.16.0
场景
接收了base64格式数据字符串data:*/*;base64,xxxxxx就是这种样式的要将其存储于本地。将字符串,号后的字符串转二进制写入本地。内容各种的都获取成功也创建写入成功。问题出来了后缀的获取出了错以至于生成了一个filename.样式的文件在win系统当要删除的时候会提示找不到文件想改后缀名同样也提示找不到文件可几十兆的文件就在那里。尝试了用360杀毒里的文件粉碎工具进行删除……界面提示成功了但是文件依然存在
生成文件代码 const targetDirectoryPath 文件存储的目录;//const ext ;//错误的根源在这里当时获取后缀的脚本写错 导致此值应该是 undefined 或 null// arg.data 的base64图片数据const base64Data arg.data.split(,)[1];const bufferData Buffer.from(base64Data, base64);const hashHex 省略;//获取二进制哈希作为文件名文件名是有的// 错误的原因是 ext 文件后缀没有获取到但是内容成功创建const targetFilePath ${targetDirectoryPath}/${hashHex}.${ext};// 将文件内容写入fs.writeFile(targetFilePath, bufferData, (writeErr) {if (writeErr) throw writeErr;// console.log(File has been moved and renamed to ${targetFilePath});});猜想
nodjs理解的是这是一个有内容的文件。 win理解的是这是一个神奇的目录还有二进制数据还是来自外星的文件后缀
解决办法
谁干的坏事让谁来解决 写nodejs脚本来删除
const fs require(fs);
// const path require(path);
const delFile (filePath) {try{// let files [];if (fs.existsSync(filePath)){// filePath 已是文件路径 请直接删除fs.unlinkSync(filePath);}else{console.log(文件不存在);}}catch (err){console.log(err);}
};
let x;
console.log(x:.x);//undefined
let fileName fileName.x;//尝试1删除失败
let fileName fileName.;//尝试2删除成功
delFile(E:\\a\\b\\fileName);
console.log(删除文件完成);对于不懂脚本的人来说
如果恶意生成一堆这类几十兆的文件存在于win系统中这可能是致命的缺陷。 我没有去尝试复现感兴趣的朋友可以去复现弄清楚原因如果确实是漏洞可以向win和node提交