编程语言
首页 > 编程语言> > javascript-在Angular中与$scope安全地使用eval()

javascript-在Angular中与$scope安全地使用eval()

作者:互联网

这样安全吗?还是这容易受到代码注入的影响?

$scope.placeholder = function(value, def) {
    var val = eval("$rootScope.master.user." + value);
    if (val) {
        return val;
    } else {
        return def;
    }
};

我使用的是括号符号,但是我意识到如果在下面的示例中传入诸如Address.addr1之类的对象,我将无法实现:

<input type="email" ng-model="user.email"  placeholder="{{placeholder('email', 'Email...')}}" /><br/>
<input type="text" ng-model="user.Address.addr1"  placeholder="{{placeholder('Address.addr1', 'Addr. Line 1...')}}" />

我以为这可以回答我的问题,但是我不确定:
Is using javascript eval() safe for simple calculations in inputs?

解决方法:

有什么原因不能执行此操作?正如Claies所说,您的问题确实闻到了XY问题:

<input type="email" ng-model="user.email"  
       placeholder="{{ user.email || 'Email...'}}" /><br/>
<input type="text" ng-model="user.Address.addr1"  
        placeholder="{{ user.Address.addr1 || 'Addr. Line 1...'}}" />

或者更好的是,问题仍然是为什么您要尝试这样做.占位符仅在字段为空时才有任何用途,因此只需提供静态值即可:

<input type="email" ng-model="user.email" placeholder="Email..." /><br/>
<input type="text" ng-model="user.Address.addr1" placeholder="Addr. Line 1..." />

标签:angularjs,angularjs-scope,javascript
来源: https://codeday.me/bug/20191028/1954130.html