0

JS の eval() 関数は悪いと誰もが言います。

実際に私はこのように使用しています:

eval("document.getElementById('toto').value");

私の意見では、ユーザーが「toto」要素で悪意のある入力を送信している場合でも、これは安全です。

確認していただけますか?(アプリケーションに脆弱性を残したくありません)。

4

1 に答える 1

2

まず、ユハナがコメントで指摘しているように、これは次のとおりです。

eval("document.getElementById('toto').value");

は の不必要な使用にすぎませevalん。

document.getElementById('toto').value;

さて、引用符なしで:

eval(document.getElementById('toto').value);

... 「toto」inputを使用して、コードが何であれ評価します。id

それがあなたの意図したものであると仮定します:

誰かが入力したコードを実行するのは少し奇妙に思えinputますが、3 つのことで問題がなければ問題ありません。3つのことは次のとおりです。

  1. evalその入力にあるコードを実行します。ユーザーがそこに置いたので、オッズはかなり良いです (少なくとも、「ユーザーは注意してください」状況です)。

  2. eval完全な JavaScript パーサーを起動します。現在、まばたきよりも速く発生する最新のブラウザでは...

  3. eval呼び出しているコンテキストで与えられたコードを実行します。これにより、そのコンテキストのローカル変数にもアクセスできます。

eval悪である」というマントラはeval、人々が時々行うように(例えば、あなたが見るeval("obj." + nameOfProperty)ように)不必要に使用し、あなたが制御していないコンテンツでそれを使用することに関連しています.

于 2013-03-29T11:06:47.653 に答える