如何解决如何检查csv文件是否包含公式?
浏览文件后,我必须检查csv文件是否在打字稿或JavaScript中包含公式。 请提供npm模块或函数的帮助,因为在上传文件之前,我需要保护文件免受CSV注入的影响。到目前为止,下面的代码是我尝试过的代码,它只是给我类似字符串的#VALUE!,#NAME!等,而是让我想要= B1 + C1
var files = e.target.files;
var file = files[0];
if(file) {
var reader = new FileReader();
reader.readAsText(file);
reader.onload = (event: any) => {
var csv = event.target.result;
var string = <string>csv ;
if(string.replace(/\s+/,"").includes(',-') == true) {
this.service.openSnackBar('PLEASE UPLOAD A VALID FILE','');
} else if (string.includes("+") == true || string.includes("=") == true) {
this.service.openSnackBar('PLEASE UPLOAD A VALID FILE','');
e.target.value = '';
} else {
// if valid upload to server
}
}
}
解决方法
我很惊讶地听到CSVs 可以具有嵌入式功能-我一直以为CSVs只是文本文件,相对较安全,免受漏洞攻击。
这来自OWASP(开放式Web应用程序安全性项目):
https://owasp.org/www-community/attacks/CSV_Injection
这种攻击难以缓解,因此明确禁止 许多赏金计划。要对其进行补救,请确保没有任何单元格 以以下任意字符开头:
- 等于(“ =”)
- 加号(“ +”)
- 减号(“-”)
- 在(“ @”)处
所以这可能是一个不错的起点:
- 一次读取一行.csv并解析为列(例如
string.split(',')
) - 确保没有一列以上述四个字符中的任何一个开头:=,+,-或@
也请阅读此帖子:Is there a way to programmatically insert formulas into a csv file using vb.net?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。