Asp.net 是否有任何方法可以防止浏览器直接从IIS请求文件,同时仍允许在<;脚本>;标签?

Asp.net 是否有任何方法可以防止浏览器直接从IIS请求文件,同时仍允许在<;脚本>;标签?,asp.net,vb.net,iis,webforms,Asp.net,Vb.net,Iis,Webforms,我有点怀疑,因为标记只是对脚本文件执行常规HTTP请求,对吗?还是真的有办法做到这一点?我想将一些ASPX脚本加载到标记中,就像现在一样: <script runat="server" language="VB" src="../AdditionalField/AdditionalFieldReport.aspx"></script> 但问题是,如果有人碰巧在浏览器中输入了脚本的URL,他们就会看到脚本的源代码!如果这是不可能的,如我所料,我如何在不破坏任何东西的情

我有点怀疑,因为
标记只是对脚本文件执行常规HTTP请求,对吗?还是真的有办法做到这一点?我想将一些ASPX脚本加载到
标记中,就像现在一样:

<script runat="server" language="VB" src="../AdditionalField/AdditionalFieldReport.aspx"></script>


但问题是,如果有人碰巧在浏览器中输入了脚本的URL,他们就会看到脚本的源代码!如果这是不可能的,如我所料,我如何在不破坏任何东西的情况下保护这些脚本?脚本有各种各样的奇怪之处,变量在页面中声明并在包含的脚本中引用,反之亦然。因此,将它们封装到ASCX控件或VB类/模块并不是一件简单的事情。或者,是否有某种方法可以阻止用户从浏览器直接访问这些脚本,同时仍允许将它们加载到
标记中?

URL重写规则可用于阻止用户直接访问您的aspx脚本

 <rule name="Block browser" stopProcessing="true">
                    <match url="AdditionalField/AdditionalFieldReport.aspx$" />
                    <conditions>
                        <add input="{HTTP_REFERER}" pattern="^$" />
                    </conditions>
                    <action type="CustomResponse" statusCode="401" subStatusCode="0" statusReason="Direct access denied" statusDescription="Not allowed" />
                </rule>

因为客户端可以伪造HTTP\U引用者。此规则只能用于防止直接访问。您还需要修改并添加此规则的更多限制。在这种情况下,IIS IP限制/请求筛选器也会有所帮助


您可能需要为请求筛选器提供一些唯一的标识,以防止伪造请求。

如果您在几乎所有浏览器中按F12键,您将看到“开发人员工具”,它允许您查看脚本。为什么要阻止任何人看到JavaScript?古怪并不是真正的原因,它不是JavaScript;这是一个包含VB代码的ASPX页面。这不也会阻止通过
标记进行访问吗?您用于HTTP_REFERER的正则表达式是否只匹配空字符串?对正则表达式不太熟悉……而且,如果这确实有效,我如何阻止对多个脚本的访问?我是否可以将多个
标记添加到
中,或者是否需要为每个匹配标记使用单独的规则?我有几十个脚本要阻止…@ekolis。不会被阻止。这只是一个示例,因为我不知道您的域。你可以代替我。因此,所有未从您的域引用的请求都将被阻止。您可以添加更多模式来限制规则,但一个规则只有一个。您可以添加以限制对多个脚本的访问。