0

eval関数を使用して関数のメソッド内で解析される完全に正しいJson文字列があります。ただし、それが行われると、何らかの理由で、グローバルに定義されたメソッドの最初の行が配列のパラメーターの1つとして内部に挿入されます。

解析される文字列は次のとおりです。

{"id":1、 "name": "object1"、 "volume":15、 "weight":100}

解析行は次のとおりです。

デコードされた変数=eval('('+エンコードされた+')');

eval()関数を使用してデコードすると、別のファイル内に含まれるグローバルスコープ関数を含む「complementary」属性decode['replaceNode']が内部にあります。

バグだと思いますが、FirefoxとSafariの両方で同じことが起こるので、そうは思われません。おそらく私はevalの目的を誤解しました。

よろしくお願いします。

4

2 に答える 2

4

evalは使用しないでください。

Evalは安全ではなく、攻撃者に任意のコードを実行させる可能性があります。代わりにJSONライブラリを使用してください。

于 2012-04-26T03:54:30.857 に答える
0

使用の落とし穴を今のところ脇に置いてeval()...

あなたが説明した副作用を再現することはできません。

eval()推測では、evalによって返された結果を「拡張」するためにオーバーライドするライブラリをロードしました。

于 2012-04-26T04:15:02.123 に答える