0

ReportViewer をホストするポップアップ ウィンドウで URL アドレス バーを非表示にするために JavaScript で Location=0 を使用しようとしましたが、何らかの理由 (明らかに「セキュリティ」) で機能せず、Azure でホストされている Silverlight アプリのユーザーは、中には競合する会社の関係者もいて、お互いの見積もり ID を推測して、誰が同じビジネスについて何を見積もりを出しているかを確認できます。

ID を暗号化できることはわかっていますが、Report.aspx ファイルの ReportViewer コントロール / ObjectDataSource に ID を提供するより直接的な方法があることを望んでいます。

提案は大歓迎です。

4

1 に答える 1

0

ページで s JavaScript (jQuery を利用した) 関数を呼び出して を提供するIDと、 を使用して単純な POPUP を開く代わりに、を実行して、レポートを含む新しいウィンドウを開くGETことができます。POSTもちろんPOSTやり直しHTTPS

それとは別に、あなたの心配はセキュリティの面でひどくにおいがします。ReportViewer要求されたパラメーターがリクエスターに属していない場合、なぜ a のレンダリングを許可するのでしょうか?

セキュリティを懸念して、アプリへの匿名アクセスを無効にする必要があります。次に、どのユーザーがログに記録されているかがわかります。次に、ユーザーを見積もり ID に簡単にリンクできます。quote id次に、指定された 、または要求されたパラメーターが、それを要求したユーザーに属しているかどうかを簡単に確認できます。

ところで、AZUREここの具体的なことは何ですか?これは、Azure 固有ではなく、一般的な Web 開発者の質問です。

POST でウィンドウを開くサンプル JS 関数

function OpenWin(someId)
{
 var form = document.createElement('form');
 form.action = 'URL_TO_YOUR_RDLC_ASPX_PAGE';
 form.method = "POST";
 form.target = '_blank'; // this is important to open a new window
 var hiddenId = document.createElement('input');
 hiddenId.name = 'theNameOfTheParam';
 hiddenId.value = someId;
 form.appendChild(hiddenId);
 document.body.appendChild(form);
 form.submit();
}

追加の隠し入力を作成することで、入力フィールド (つまり、送信されるパラメーター) の数を自由に管理できます。

于 2012-10-15T19:11:47.850 に答える