1

特定の Javascript 変数がプログラム内の IF ステートメントで使用されているかどうかを確認したいと考えています。純粋な静的コード分析ではなく、これを動的に行う方法はありますか?

ここではファイルを読んでいません。実行時に何らかの拡張機能を使用して JS コードの一部を挿入し、特定の変数が IF ステートメントを通過するかどうかを動的に検出できるとしましょう。

4

1 に答える 1

1

これは悪い考えです。うまくいかないことがたくさんあります。サンドボックスを調べることができます。

ただし、セキュリティのためにこれに依存していない限り、これが役立つ場合があります。

var x = function (a, b, c) { if(a) {console.log(a)}};
var y = function (a, b, c) { if(b) {console.log(a)}};

// You can get the text of a function. Notice it's been formatted.
console.log(x.toString());
>>> "function (a, b, c) { if (a) { console.log(a) } }"

var matcher = /if ?\(.?a.?\)/g;

x.toString().match(matcher);
>>> ["if (a)"]

y.toString().match(matcher);
>>> null

注意すべきこと、私の頭の上から:

  • ブラウザが異なれば、コードの形式も異なる場合があります。
  • 変数に別の名前を割り当てることで、変数に別名を付けることができます。
  • 変数には、インデックス アクセスと文字列でアクセスできます。
  • これはナイーブな正規表現であり、明らかに一致しif (nota)ます。
  • あなたのjavascriptが見えるようになるので、これを回避したい人は誰でも方法を見つけるでしょう.
于 2013-10-11T10:51:53.370 に答える