C#でMDXインジェクション攻撃を防御する良い方法はありますか?私は現在、ADOMDClientを使用していますが、別のクライアントを使用する必要がありますか?MDXインジェクション攻撃を防止する
2
A
答えて
3
ユーザー指定の文字列をMDX StrToSet、StrToTuple、StrToMember、およびStrToValue関数に渡すことにより、MDX注入攻撃を防ぐためにパラメータ化されたMDXクエリを作成できます。
ここには、this MSDN pageのMDX StrToSet関数のいくつかの例があります。
次の例では、StrToSet関数を使用してState-Province属性階層のメンバーのセットを返します。セット指定は、有効なMDXセット式を提供します。
SELECT StrToSet ('[Geography].[State-Province].Members')
ON 0
FROM [Adventure Works]
次の例は、制約フラグによるエラーを返します。セット指定は有効なMDXセット式を提供しますが、CONSTRAINEDフラグにはセット仕様の修飾メンバー名または非修飾メンバー名が必要です。
SELECT StrToSet ('[Geography].[State-Province].Members', CONSTRAINED)
ON 0
FROM [Adventure Works]
次のコード例
では、パラメータ化クエリを作成する方法、およびのAdomdConnectionオブジェクトを使用して、それを実行する方法を示します。パラメータ化されたMDXクエリを実行し、CellSetを返す次の汎用C#メソッドがあるとします。
public CellSet GetCellSet(string connectionString, string query, IDictionary<string, object> parms)
{
using (var conn = new AdomdConnection(connectionString))
{
// Open the connection.
conn.Open();
// Create the command.
using (var cmd = conn.CreateCommand())
{
// Set the command query.
cmd.CommandText = query;
// Add any query parameters.
if (parms != null)
{
foreach (var kv in parms)
{
var parameter = cmd.CreateParameter();
parameter.ParameterName = kv.Key;
parameter.Value = kv.Value;
cmd.Parameters.Add(parameter);
}
}
// Execute the query and return the CellSet.
return cmd.ExecuteCellSet();
}
}
}
クライアントがMDXセット式の文字列表現を渡せるようにする別の方法があるとします。このメソッドは、キューブからセットを選択し、結果のCellSetを返します。
public CellSet GetMdxSetOnColumns(string setExpression)
{
var connectionString = "replace with your connection string";
// The query parameter @TheSet will be replaced with setExpression.
var query = "SELECT StrToSet(@TheSet) ON 0 FROM [Adventure Works]";
// Add the passed in string as a query parameter.
var parms = new Dictionary<string, object>();
// You can omit the "@" in front of the parameter name here.
parms.Add("TheSet", setExpression);
return GetCellSet(connectionString, query, parms);
}
クライアントコードはこのようにこのメソッドを呼び出すことができます。
var cellSet = GetMdxSetOnColumns("[Geography].[State-Province].Members");
関連する問題
- 1. XSS攻撃防止
- 2. AspNetUsersテーブルSQLインジェクション攻撃を防止するには?
- 3. XSS攻撃を防止する
- 4. XXE攻撃を防止する方法
- 5. ストアドプロシージャを使用するとSQLインジェクション/ XSXX攻撃が防止されますか?
- 6. DBにインジェクション攻撃防御を挿入する
- 7. 防御攻撃
- 8. Sqlインジェクション攻撃とサブソニック
- 9. JavascriptとXSS攻撃の防止
- 10. WCFコールでのXSS攻撃の防止
- 11. リプレイ防止REST URLのリプレイ攻撃
- 12. .NET DataView RowFilterに対するインジェクション攻撃
- 13. XSS攻撃を防ぐ
- 14. 悪意のあるリクエスト - DOS攻撃を防止する
- 15. DOS攻撃(Heroku)を防止するためのレート制限
- 16. PHPでURLエンコードされたXSS攻撃を防止する
- 17. Djangoでサービス拒否攻撃を防止するためのベストプラクティス
- 18. request.getHeader( "Origin")がクロスサイトリクエスト偽造攻撃を防止する方法は?
- 19. C#のXSS攻撃防御
- 20. ファイアベースでのjavascriptインジェクション攻撃のリスク
- 21. asp.net - SQLインジェクション攻撃後のクリーンアップ方法
- 22. WCFサービスに対するCSRF攻撃の防止
- 23. このコードでXSS攻撃を防止できましたか?
- 24. .NETの動的SQLでテーブル名または列名をサニタイズしますか? (防止SQLインジェクション攻撃は)
- 25. Java/AMFアプリケーションでのフラッディング/ DOS攻撃の防止
- 26. MVCでのURL操作攻撃の防止?
- 27. HTTPS攻撃とMITM攻撃
- 28. XSS攻撃を防ぐ方法tomcat 5.5
- 29. オープンリダイレクト攻撃を防ぐ方法は?
- 30. xss攻撃/注射を防ぐ
[ 'AdomdCommand'が持つ' Parameters'(https://docs.microsoft.com/en-us/sql/analysis-services/multidimensional-models/mdx/using-variables-and-parameters- mdx)、['STRTOMEMBER'](https://docs.microsoft.com/en-us/sql/mdx/strtomember-mdx)には、俗語を防ぐための' CONSTRAINED'があります。それはかなりです。 –
あなたは良い例がありますか –