2

大規模な ASP.NET ソフトウェア製品に取り組んでいます。ユーザーが特定のフィールドに定数ではなく式を入力できるようにしたいと考えています。通常、次のようなものです。

(Price * 1.175) + 25

明らかな解決策は、IronPython を埋め込み、スコープを作成し、「価格」(およびその他の) 変数を渡してから、上記を IronPython コードとして実行することです。

ただし、ユーザーの入力を妨げるものは何もありません。

1 / 0

また

def func1():
    func1()
func1()

また

import System.IO
File.Delete(....)

しかし、すべての例外をキャッチし、インターネット アクセス許可が設定されたアプリケーション ドメインで IronPython コードを実行した場合、安全でしょうか?

4

2 に答える 2

4

ユーザーが有効なコードを入力するのを妨げるものは何もないことに注意して、自分の質問に答えます。ユーザー入力を絶対に信用しないでください。これまで。

于 2009-12-14T18:07:25.040 に答える
0

同様の状況で、サーバー側のJScriptを選択しました。別の保護レイヤーを追加するために、式を関数でラップしてから、関数を実行します。

function generated123(p1, p2, p3) {
     return
     // user code goes here
     ;
}

このようにして、ユーザーは危険なものを強制的にインポートすることはできません。また、パフォーマンスに適したサーバー側のJScriptがコンパイルされます

于 2009-12-14T18:09:18.400 に答える