【问题标题】:Only allow localhost to certain page on asp.net只允许 localhost 访问 asp.net 上的特定页面
【发布时间】:2015-07-30 15:51:08
【问题描述】:

我有一个生成 PDF 然后将其返回给用户的页面。生成 PDF 的功能将访问其他 ASP.NET 页面,然后将这些页面呈现为 PDF。

我想要的是只允许本地访问那些 ASP.NET 页面(通过 PDF 生成器)。因此,阻止直接访问将只允许 PDF 处理工具访问它,因为它在 ASP.NET 应用程序中本地运行。

我尝试在 web.config 中添加 ipSecurity 元素,以仅允许 localhost 访问这些 aspx 页面。开发时在我的机器上本地运行所有这些工作正常,但是当我部署并尝试生成报告时,我收到 403 错误。

我请求生成报告的页面位于FolderNameHere/ReportPage.aspx。然后此页面上的函数将调用FolderHere/Code/Report 中的页面以生成PDF。问题是我认为当我访问`FolderNameHere/ReportPage.aspx 时,即使该函数在本地运行,它也会将我的 IP 地址传递给未来对报告文件夹页面的访问。有没有办法可以阻止对这些页面的直接访问,除了由非本地地址调用的本地运行的函数。这是我的配置,不幸的是它没有起到作用。

<location path="Requisite/Code/Report"> <!-- TODO: Move to WebConfig in Requisite-->
    <system.webServer>
      <security>
        <authentication>
          <anonymousAuthentication enabled="true"/>
        </authentication>
        <ipSecurity allowUnlisted="false">
          <clear />
          <add ipAddress="127.0.0.1" allowed="true"/> <!-- only allow local host -->
        </ipSecurity>
      </security>
    </system.webServer>
    <system.web>
      <authorization>
        <allow users="?" />
      </authorization>
    </system.web>
  </location>

【问题讨论】:

    标签: asp.net iis web-config


    【解决方案1】:

    环回 IP 地址和本地主机之间通常存在区别。尝试在已部署的配置上将 127.0.0.1 更改为 localhost。

    【讨论】:

    • 不幸的是 ipAddress 属性只接受 IPv4 地址。
    • @Justin 你试过了吗? Per here:“根据 IP 版本 4 地址或 DNS 域名指定访问限制。”你想要的属性是domainName 而不是ipAddress
    • 我在 domainName 中尝试了 localhost,但它仍然给我一个 403。
    猜你喜欢
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多