0

そのため、Eval の使用は重大なセキュリティ上の問題を引き起こす可能性があるため、良くないというのが古くからの基準です。特に、どこかでユーザー入力に由来する可能性のあるものを評価しているシナリオでは。これは 100% 理にかなっており、Eval の使用を回避するのに問題があったことは一度もありません。しかし、最近奇妙な状況に直面していたので、この種のことについて少し違った考え方をするようになりました。

私は次のようなJS関数を書きました:

function someFun(param, callback) {
    bool = someOtherFun(param);
    if(bool)
        callback();
    else
        return false;
}

これはかなり簡略化されていますが、原理は同じです。別の関数を呼び出し、その戻り値に基づいて、パラメーターとして提供された関数を実行するか、false を返します。しかし、この種のものは、F12 の JS コンソールを使用して Eval(txtbox.value) と同じくらい簡単に悪用できると思いました。それは問題ですか?

この F12 の世界では、Eval の心配はほとんどないように思えます。インジェクション攻撃とは何かを知っている人なら誰でも、F12 とは何かを知っている可能性があります。私が間違っている?

4

2 に答える 2

5

F12やfirebugなどのツールがJavaScriptを新しいレベルの精査にさらし、人々が攻撃しやすくすることは正しいですが、evalを使用する危険性を見逃しています。

現在のユーザー(ブラウザーにページがロードされている)が何をするかを心配する代わりに、次のコンピューターでの共同作業について心配する必要があります。同僚がStackOverflowにコメントを入力し、それがデータベースに保存されてから、ユーザーのコンピューターに送信されて表示されるとします。そして、そのレンダリングプロセスの一部として、コメントがJSONにエンコードされ、evalが呼び出されたとします。

これは、ユーザーがページ上で独自のJavaScriptを検査または実行することとは関係のない危険なエクスプロイトが待機している場所です。同僚がコメントに悪意のあるJavaScriptを埋め込み、その上でevalを呼び出すと、そのJavaScriptが実行され、ページを表示するすべてのコンピューターで悪意のあるコードが実行される可能性があります。

そのため、evalの使用は避けてください。

于 2012-05-25T21:07:06.070 に答える
2

エクスプロイトのシナリオが表示されません。はい、悪意のあるコールバックを渡して関数を呼び出す可能性があります。または...コンソールから悪意のあるコールバックを呼び出す可能性があります。

于 2012-05-25T21:04:21.313 に答える