使用File.write()来覆盖javascript是否安全?

时间:2011-04-01 18:21:44

标签: javascript adobe extendscript

这是Adobe ExtendScript的javascript。基本上我想在脚本中有一个持久变量来存储用户的首选项,就像使用AppleScript property一样。我能想到的唯一方法是让脚本用File.write()覆盖自己。

var MY_PROPERTY = true;

function reassignProperty(propName, propValue) {
    var thisFile = new File($.fileName);

    if (thisFile.open("r")) {
        var myScript = thisFile.read();
        thisFile.close();

        // Look for the property declaration and overwrite with new value
        var searchStr = new RegExp("(var " + propName + " = )" + ".+");
        var newScript = myScript.replace(searchStr, "$1" + propValue + ";");

        thisFile.open("w");
        thisFile.write(newScript);
        thisFile.close();
    }
}

reassignProperty("MY_PROPERTY", "false");

据我所知,这很有效。但它安全吗?我的直觉告诉我应该有一个更简洁的方法来拥有持久性变量,但如果没有,我只想知道自我覆盖脚本是否存在任何潜在问题。

2 个答案:

答案 0 :(得分:0)

我不熟悉Adobe ExtendScript,但通常您会将用户的首选项存储在单独的文件中,然后在程序启动时读取该文件。

答案 1 :(得分:0)

几乎可以肯定,包含程序替换自身的能力将是一个糟糕的设计决策。首先你会遇到困难,因为当前的执行线程与应该运行的文件不同,所以你肯定会产生副作用。

基本上你要求混淆,混乱是不好的。您应该使用外部文件来存储数据,或者只是将信息保存在HTML的变量或字段中。