0

誰がダウンロードできるかを制限したい実行可能ファイルがあります。ユーザーが実行可能ファイルのダウンロードを許可されていない場合、リンクが表示されないように、UI のトリミングが行われています。また、リソースを不正なダウンロードから保護するルールを web.config に入れましたが、機能していないようです。

<location path="Utilities/SomeTool.exe">
  <system.web>
    <authorization>
      <allow roles="SomeRole" />
      <deny users="*"/>
    </authorization>
  </system.web>
</location>

リソースをダウンロードしようとすると、ログイン ページが表示されます。これは、ユーザーがリソースをダウンロードできるロールに属していない場合に表示されます。

特定のユーザーを許可するように web.config のルールを変更できます。その特定のユーザーで実行可能ファイルにアクセスできますが、すべてのユーザーのアクセス ルールを変更する必要があるため、それは機能しません。役割に追加されました。

<location path="Utilities/SomeTool.exe">
  <system.web>
    <authorization>
      <allow users="MyUserName"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</location>

このページの指示に従って、モジュールのリストを削除して再度追加することにより、IIS7 の統合パイプラインを利用するように web.config を既にセットアップしています。これにより、すべてのリソースを ASP.NET リソースであるかのように処理するように Web サイトがセットアップされます。

実行可能ファイルを保護するために IIS7 の構成に欠けている可能性があることを知っている人はいますか?

リンクが呼び出してリソースを返す Web サービスを作成するなど、不正なダウンロードから実行可能ファイルを保護するために代わりに実装できる他のソリューションを考えました。次に、Web サービス内で、実行可能ファイルを返す前にユーザーのロールの検証を実行できます。しかし、それは私が経験する必要がある以上の仕事のようです.

私のweb.configのsystem.webセクションは次のとおりです。

<system.web>
  <compilation debug="false" targetFramework="4.0" />
  <httpRuntime enableVersionHeader="false" requestValidationMode="2.0" />
  <customErrors mode="RemoteOnly">
    <error statusCode="404" redirect="~/MyErrorPage.aspx" />
  </customErrors>
  <authentication mode="Forms">
    <forms timeout="60" ticketCompatibilityMode="Framework40" />
  </authentication>
  <authorization>
    <deny users="?" />
  </authorization>
  <sessionState timeout="60" />
  <membership defaultProvider="MyMembershipProvider">
    <providers>
      <clear />
      <add name="MyMembershipProvider" type="MyMembershipProvider" applicationName="MyApp" />
    </providers>
  </membership>
  <roleManager defaultProvider="MyRoleProvider" enabled="true" cacheRolesInCookie="true" cookieTimeout="60">
    <providers>
      <clear />
      <add name="MyRoleProvider" type="MyRoleProvider" applicationName="MyApp" />
    </providers>
  </roleManager>
</system.web>

補足として、web.config は、Visual Studio 2010 でホストされている場合は Web サイトで動作しますが、IIS7 で実行すると失敗します。

更新: ロールに基づいて *.html ページと *.aspx ページの両方の異なるリソースを保護しようとしましたが、ユーザーが適切なロールに属しているにもかかわらず、ログイン ページにリダイレクトされるという同じ問題が発生します。

前もって感謝します。

4

1 に答える 1

0

ASP.net ハンドラーをすべてのファイル タイプに対して呼び出そうとする IIS7 統合モードについては既に説明しました...

詳細については、こちらを参照してください: URL 承認と Asp.Net に関連しないファイルの種類 そしてここ: Does web.config 承認は aspx 以外のファイルで機能しますか?

思いつきで、少なくともすべてのプライベート ファイルをサブディレクトリに置き、実際のファイル自体ではなくディレクトリにロケーション セキュリティを適用するようにします。これで問題が解決する場合があります。

個人的には、ファイル名の変更に対する将来の証明となるため、とにかくファイルではなくディレクトリ パスを保護します。

于 2012-07-11T23:44:06.430 に答える