2016-12-14 11 views
-3

私は「評価は悪である」について話す、私もMSDNには、それを述べ、それがパフォーマンスの問題を持って理解文書が見つかりました:セキュリティに関する懸念事項はありますか?

このメソッドは、実行時にリフレクション を使用して、遅延バインディングの評価を行いますので、それが引き起こす可能性があります 標準のASP.NETデータバインディング構文に比べて著しく遅いとパフォーマンス - MSDN

パフォーマンスの問題のうち、次のコードを考慮:

<%# Eval("MyDataFieldFromDataBase") %> 
を0

(コードの挿入を防ぐために)フィールドが危険な方法で解釈されないようにするために何かできますか?

+0

あなたは「ハック」の意味を明確にしていません。 – mason

+0

evalは 'Foo.MyDataFieldFromDatabase'の値を表示する以外のことを行います。 –

+0

なぜですか?あなたは何を達成しようとしていますか? – mason

答えて

1

私はあなたがASP.NETのものではなく、いくつかの異なるEvalについて話していると思います。 aspxの評価はちょうどmethodであり、他の方法と同様に有害です。

この問題の潜在的な問題は、Evalがオブジェクトを返すことです。この特定の型を想定していないコードでは、無効なキャスト例外が発生する可能性があります。したがって、ページ上のEvalを使用する型の安全性はありません。

もう1つのことは、Evalはエスケープ処理を何もしないため、潜在的に危険なコンテンツがDBにある場合、Evalによってそのまま返されます。しかし、これはEval固有の問題ではなく、すべてのユーザー入力を確実に念じる必要があります。Evalはそれとは関係ありません。

ASP.NETのEvalは完全に無害です。

+0

はい、私はAspxについて話していました。しかし、私はasp.netをタグ付けします。私はそれを修正します、あなたはそれを反映するためにあなたの投稿を編集することができます。そして私は間違っていて、評価は悪いaspx Evalには適用されません。知っていることは素晴らしいことです。私はチームにそれを使わなくする何かを見つけることを期待していましたが、それは大丈夫です。私はコードを編集するだけです。 –

+1

あなたのタグは私にとってはうまく見えますが、あなたはASP.NET evalについて質問していました。 aspxは、ASPNETが使用するマークアップページの種類に過ぎません。再タグ付けの必要はありません – Andrei

+0

Eval自体はエスケープできませんが、ASP.NET 4.5では '<#:Eval(" SomeField ")%>構文を使用して出力をエンコードし、スクリプトをクライアント側に挿入できません。 – mason

関連する問題