2016-12-20 4 views
0

現在、複数のユーザーグループによって異なる使用が行われる一般的なレポートを使用しています。これは、隠されたパラメータ( 'show column x'、 'enable feature y'など)の異なる設定でリンクされたレポートを作成することで可能になりました。 他のレポートでもこれらの設定(パラメータ)が必要なので、Go to ... Actionを使用してこれらの設定を渡します。URLでコマンドを渡すと、パラメータが脆弱になる

外観を作成し、我々は後にしている感じに、我々は、同様な&rc:Parameters=Falsereference)としてHTML Viewer commandsReport Server commandsをいくつかの追加パラメータを渡しています。

残念ながら、Go to URLというオプションがあります。これはMicrosoftがGo to Reportに対してこれらのコマンドを実装していないためです。つまり、URLに設定(隠しパラメータ)を渡す必要があります。この結果、セキュリティの問題が発生します(例:&PARAMETER_ENABLE_FEATURE_Y=False)。

ユーザーはURLにこのパラメータがあることに気付く可能性があり、URLを&PARAMETER_ENABLE_FEATURE_Y=Trueに編集してこの機能を有効にする可能性があります。

だから私の質問は:私たちの敏感なパラメータを編集し、HTML Viewer commandsReport Server commandsを使用できる一方からユーザーを防止しながらReporting ServicesActionを使用する方法?

+0

GETではなくPOSTを使用してレポートを呼び出すことができます。 POSTはURLの代わりにPOSTの本体にパラメータを置きます(これはGETの機能です)。これはおそらくjavascriptを使って行うことができます。しかし、ユーザーはF12ツールを使用してポストパラメータを見ることができますが、何らかの理由で悪化します... SSRSは投稿をGETに変えてURLに表示します。 –

答えて

1

URLベースのパラメータを絶対に使用する必要がある場合は、この意味で完全なセキュリティは得られません。

URLを介してナビゲートする場合、パラメータ値をハードコーディングせずに非表示にする唯一の方法は、データ駆動型にすることです。ただし、シナリオでは、データ駆動型のパラメータを設定する値を渡す必要があるため、これは100%安全です。

このレベルの難読化は、おそらく十分であり、すべてのパラメータの組み合わせまたは必要なもののリストを照合し、データセットで呼び出すことができるIDを割り当てることで実現できます。これは明らかに、ユーザーが好奇心をそそられて維持しなければならない場合、ユーザーによって変更される可能性があります。

あなたのレポートのための 'ランディングページ'を提供し、すべてをiframeに表示することで、URLバーを完全に隠すことしかできないと言います。このフレームは、あなたのGo To URLにjavascriptのリンクを標的とすることができる。

="javascript:void(window.open('URL to open','iFrame Name'))" 

あなたがが、私は、Active Directoryのセキュリティグループにあなたのグループにユーザーをアドバイスして、権限のコレクションを維持することができればとグループごとのカスタム化。次に、ユーザが回答コードhereに似たカスタムコードを使用しているグループを確認し、それに応じて必要なパラメータ値を返します。

このようにすることで、同じパラメータ構造をすべてのレポートに展開したと仮定すると、どのグループが中央の場所から見えるかを維持することができます。

+0

ありがとう、ありがとうございました。私は、一連のパラメータを設定テーブルに移動することに決めました。ここでは、「Active Directoryグループ」に応じて値が返され、「デフォルト値」として使用されます。 URLには、選択した日付、コストセンターなどを示す他のいくつかのパラメータが残っています。これらのパラメータについて、私は 'available values'がユーザのコンテキストに対して有効であることを確認しました。 – Aquillo

関連する問題