ASP.NET MVC アプリケーションに、AJAX を使用して並べ替え可能 (サーバー側) およびフィルター可能にしたいテーブルがあります。他の場所でもかなり簡単に使用できるようにしたかったのですが、並べ替えとフィルター処理をクエリ式にハードコーディングするのは気が進まなかったので、式を動的に作成する方法を探しました。これを行うための最良の方法は、Dynamic LINQ を使用することでした。 .
以下のような URL からのユーザー入力は、動的 Where または OrderBy に直接挿入されます。
/Orders?sortby=OrderID&order=desc&CustomerName=Microsoft
これにより、次の 2 つの式が生成されます。
OrderBy("OrderID descending")
Where(@"CustomerName.Contains(""Microsoft"")")
データベースに直接スローされず、ここに直接SQLを挿入してもプロパティに反映できず、タイプセーフであるため機能しないことは理解していますが、私よりクリエイティブな人がいるのだろうか関係なく、それを悪用する方法を見つけることができます。私が考えることができる 1 つのエクスプロイトは、テーブルに表示されていないプロパティを並べ替え/フィルター処理できることですが、それでも表示されず、ハッシュによって防止できるため、これはそれほど有害ではありません。
ユーザーが直接入力できる唯一の方法は、OrderBy と Where を使用することです。
確認するだけです、ありがとう:)