【问题标题】:How to fix dynamic code evaluation issue in fortify scan because of using eval() in java script由于在 java 脚本中使用 eval(),如何修复强化扫描中的动态代码评估问题
【发布时间】:2016-02-03 14:53:56
【问题描述】:

HP fortify 扫描显示动态代码评估问题如下所示。它说 javascript 中的 eval() 函数会导致安全问题。如何解决这个安全问题。 下面给出代码。

        if (objItem.column == 'leftColumn')
        {
            strItems = lcItems.value
        }
        else if (objItem.column == 'rightColumn')
        {
            strItems = rcItems.value;
        }
        else if (objItem.column == 'toolbox')
        {
            strItems = tbItems.value;
        }
        objItems = eval(strItems);
        item = null;

这里 eval(strItems);是违反安全的代码。如何解决这个问题。查看问题详细信息和解决问题的建议 Issue explanation

Reccomendation to fix issue

【问题讨论】:

  • 没有看到 what 你正在通过eval 运行,不可能告诉你如何在没有eval 的情况下重写它(或者你是否可以安全地忽略警告,很可能在这里实际上需要使用eval)。
  • 代码试图做什么?例如strItems 变量的计算结果是什么?一旦我们知道了这一点,我们就可以为您提供更好的解决方案。
  • document.getElementById(tbItemsID);
  • 你是说strItems的值实际上是"document.getElementById(tbItemsID);"?如果是这样,我会将其修改为仅是您关心的 ID,然后按 ID 而不是 eval 语句进行查找。
  • 如果您只想避免警告,您可以尝试(0, eval)(strItems)。但是在没有eval 的情况下重写代码会好多

标签: javascript


【解决方案1】:

这完全取决于您使用的 strItems 变量的计算结果(例如,它是如何使用的?)

如果该值是另一个元素的 ID,则将 eval 行更改为此将起作用:

objItems = document.getElementById(strItems);

但是如果是元素的名字...

//presuming there is at least 1 match by name, drop the index if you want the "set"
objItems = document.getElementsByName(strItems)[0];

还是别的什么?您需要相应地更改代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 2017-01-01
    • 2010-09-05
    • 2021-09-13
    相关资源
    最近更新 更多