2

Google と SO の投稿を検索しましたが、問題を解決する結果が得られませんでした。

私のweb.configは次のとおりです。

<location path="~/reports/PayPeriodQtrReport.aspx, ~/reports/PayPeriodDetailReport.aspx">
  <system.web>
    <authorization>
      <allow roles="PayrollReports"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</location>

<location path="~/reports/ManifestAnnualReport.aspx, ~/reports/ManifestDetailedReport.aspx">
  <system.web>
    <authorization>
      <allow roles="ManifestReports"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</location>  

承認は必要に応じて機能します (つまり、「PayrollReports」ロールを持つ人はメニュー項目でマニフェスト レポートを表示できず、「ManifestReports」ロールを持つ人はメニュー項目で給与レポートを表示できません)。

問題:
「PayrollReports」ロールを持つユーザーとして、自分の URL に入力する http:\\mysite.com\reports\ManifestDetailedReport.aspxと、ページが表示されます。表示されるはずのは、authorizedaccess.aspx です。

同様に、「ManifestReports」ロールを持つユーザーとして、URL に入力するhttp:\\mysite.com\reports\PayPeriodQtrReport.aspxとページが表示されます。表示されるはずのは、authorizedaccess.aspx です。

質問: web.config を使用して、ユーザーが URL を入力してページにハッキングするのを防ぐにはどうすればよいですか?

4

1 に答える 1

5

各ファイルを独自のlocationエントリに入れ、次を削除する必要があり~/ます。

<location path="reports/PayPeriodQtrReport.aspx">
  <system.web>
    <authorization>
      <allow roles="PayrollReports"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</location>

等...

これは、RoleProvider を使用していることを前提としています。組み込みの RoleProvider を使用しているかRoleProvider、web.config から継承して適切に指定されているカスタム RoleProvider を使用しています。

于 2013-03-22T20:19:25.317 に答える