保护 Kentico 媒体库文件免受直接 URL 访问
Securing Kentico Media Library file from direct URL access
我试图阻止对我在 Kentico v9.0 中的某些媒体库中的所有文件进行未经授权的访问。我打算仅通过 Kentico 角色成员资格和全局管理员提供对某些库的访问权限。
我已按照此处发布的指南进行操作:Securing media libraries,它似乎工作正常:直接 URL 路径访问导致 401.2 - 未经授权 消息,无论用户身份验证状态和角色成员身份如何。我有一个正确设置的媒体库 Web 部件以提供永久性 URLs,它也能按我的预期工作。
不过,我还有一个要求;这是提供一个 ~/googlesitemap.xml 文件。我按照此处发布的指南进行操作:Google Sitemaps,它指示我向系统提供属性。web.config:
中的 webServer/modules 节点
<modules runAllManagedModulesForAllRequests="true">
...
</modules>
但是,当我添加以上内容时,任何经过身份验证的用户如果输入完整 URL 就可以访问我的媒体库文件。这违反了我基于角色成员资格访问媒体库的尝试;因为我不希望其他角色的用户能够访问这些文件。
我试图通过在 设置 > [=35 中将我的媒体文件夹根目录添加为已排除 URL 来从重写引擎中排除所有媒体库文件=]s and SEO > URL Format > Excluded URLs...但这似乎没有帮助。
非常欢迎任何建议!
据我所知,runAllManagedModulesForAllRequests 属性仅对不同的扩展名(不同于 .aspx)是必需的。如果您使用的是 IIS 7 或更高版本,您可以在 web.config 中省略此属性(参见 source)。
Note: In ASP.NET websites, the value of runAllManagedModulesForAllRequests previously had to be set to true to support routing. However, once IIS 7 has been updated with a Service Pack, the value of runAllManagedModulesForAllRequests can be set to false or omitted when working with ASP.NET routing. For more information, see ASP.NET Routing on the MSDN website.
如此快速修复:不要将此属性添加到 web.config,您的媒体库(权限)应该会如您所愿。
编辑:所以我想我已经为您找到了解决方案。 runAllmanagedModulesForAllRequests 属性 kills 匿名身份验证设置似乎使 Kentico 在成功身份验证后提供数据。我找到了解决方法,因此您可以禁止访问媒体库。尝试添加如下内容:
<location path="MySite/media/MyMediaLibrary">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
进入您的 web.config 在 配置 部分。
我试图阻止对我在 Kentico v9.0 中的某些媒体库中的所有文件进行未经授权的访问。我打算仅通过 Kentico 角色成员资格和全局管理员提供对某些库的访问权限。
我已按照此处发布的指南进行操作:Securing media libraries,它似乎工作正常:直接 URL 路径访问导致 401.2 - 未经授权 消息,无论用户身份验证状态和角色成员身份如何。我有一个正确设置的媒体库 Web 部件以提供永久性 URLs,它也能按我的预期工作。
不过,我还有一个要求;这是提供一个 ~/googlesitemap.xml 文件。我按照此处发布的指南进行操作:Google Sitemaps,它指示我向系统提供属性。web.config:
中的 webServer/modules 节点<modules runAllManagedModulesForAllRequests="true">
...
</modules>
但是,当我添加以上内容时,任何经过身份验证的用户如果输入完整 URL 就可以访问我的媒体库文件。这违反了我基于角色成员资格访问媒体库的尝试;因为我不希望其他角色的用户能够访问这些文件。
我试图通过在 设置 > [=35 中将我的媒体文件夹根目录添加为已排除 URL 来从重写引擎中排除所有媒体库文件=]s and SEO > URL Format > Excluded URLs...但这似乎没有帮助。
非常欢迎任何建议!
据我所知,runAllManagedModulesForAllRequests 属性仅对不同的扩展名(不同于 .aspx)是必需的。如果您使用的是 IIS 7 或更高版本,您可以在 web.config 中省略此属性(参见 source)。
Note: In ASP.NET websites, the value of runAllManagedModulesForAllRequests previously had to be set to true to support routing. However, once IIS 7 has been updated with a Service Pack, the value of runAllManagedModulesForAllRequests can be set to false or omitted when working with ASP.NET routing. For more information, see ASP.NET Routing on the MSDN website.
如此快速修复:不要将此属性添加到 web.config,您的媒体库(权限)应该会如您所愿。
编辑:所以我想我已经为您找到了解决方案。 runAllmanagedModulesForAllRequests 属性 kills 匿名身份验证设置似乎使 Kentico 在成功身份验证后提供数据。我找到了解决方法,因此您可以禁止访问媒体库。尝试添加如下内容:
<location path="MySite/media/MyMediaLibrary">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
进入您的 web.config 在 配置 部分。