ToB企服应用市场:ToB评测及商务社交产业平台

标题: Fotify扫描题目Dynamic Code Evaluation:Code Injection [打印本页]

作者: 美食家大橙子    时间: 2024-7-31 09:38
标题: Fotify扫描题目Dynamic Code Evaluation:Code Injection
  在使用fotify代码扫描时,程序中JavaScript 的 eval() 函数使用的地方会报Dynamic Code Evaluation:Code Injection,解释为动态代码评估、代码注入,Web 开发中。这两种风险都可能导致严重的安全题目.
  其安全题目大致描述为
  1. 1、动态执行的代码可能会包含恶意代码,导致安全漏洞。
  2. 2、代码注入,通过各种方式注入恶意代码,这些代码可能会执行有害的操作,如窃取数据、篡改应用逻辑等。
  3. 3、动态生成的代码可能难以调试和维护,因为它可能依赖于运行时的数据。
  4. 4、远程执行脚本等风险
复制代码
  通过在网上搜索相关解决方案,最终形成解决方案为更换掉使用eval的地方。起首来看一下eval函数的强大功能
  1. 1、eval()可以执行任何有效的JavaScript代码,包括变量声明、表达式、语句、函数定义等<br>2、eval()可以用于动态执行代码、动态创建函数、动态解析JSON等<br>3、通过eval()函数,可以将字符串转换为可执行的代码,从而实现动态编程和代码的灵活性
复制代码
  根据对工程中所使用到的eval函数的分析,最终,使用JSON.parse()来更换,但更换过程也必要根据实际环境进行相应的修改。
  一、动态JSON剖析
  当剖析后端返回值形如var data = {datacount:1,datas:[{"t":1,"w":2}]}这种串时,由于此串并不是标准的json(标准的json键使用双引号包住)。当使用eval函数处理时,可以通过eval("(" + data+ ")")方式处理【由于该data字符串是以{}开始和末端,当使用eval函数时,会将其当作一个语句块处理,以是必要使用括号表达式(expression),将其转化为对象】,转化为对象之后便可以方便的获取其中的属性。如果直接使用JSON.parse(),会剖析错误。这样就必要对返回值的字符进行加工处理,可通过以下方法更换
  1. var date = "{datacount:1,datas:[{"t":1,"w":2}]}";
  2. data = data.replace(/(\w+):/g, '"$1":');
  3. <em id="__mceDel"><em id="__mceDel"><em id="__mceDel">var relVal = JSON.parse(data);</em></em></em>
复制代码
  处理之后,获取又可通过对象调用方式获取,如relVal.datacount。
  二、通过eval函数转化为可实行代码
  如eval(2*"2"),必要返回4,可以使用JSON.parse(2*"2")更换。
  当然还有更有效的安全方法作为更换方案解决fotify扫描题目,此仅作为一种方案介绍,如有疑问,欢迎讨论交流。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4