如何阻止来自 web.config 中特定域的请求?
How can I prevent requests from certain domain in web.config?
我想在 web.config 中为我的应用程序限制一个域。我该怎么做?我刚刚找到了 IIS 设置的解决方案,例如
<add ipAddress="some_ip_address" />
但我想限制一个域,而不是 IP 地址
在 IIS 管理器中:
- Select 所需站点。
- 在“主页”窗格中,打开“IP 地址和域限制”。
- 在操作窗格中,启动编辑功能设置...
- 选中启用域名限制复选框
- 点击[确定]退出。
您现在可以像添加 IP 地址一样添加域名。
注意:这不能通过 web.config 完成。设置存储在 ApplicationHost.config 中。不过,您将必须 访问 IIS 管理器以启用 IP 和域安全。没有办法解决这个问题。
<ipSecurity enableReverseDns="true">
<add ipAddress="192.168.0.1" allowed="false" />
<add domainName="google.com" allowed="false" />
</ipSecurity>
web.config 中没有直接设置来执行此操作。但是,您可以在 web.config 中创建自定义集合以列出您的域,并编写自定义请求处理程序或自定义操作过滤器来阻止特定域。 但是这很容易被欺骗或绕过。这是一个例子:
你的配置部分 class:
public class DisallowedDomainsSection : ConfigurationSection
{
// Create a "remoteOnly" attribute.
[ConfigurationProperty("remoteOnly", DefaultValue = "false", IsRequired = false)]
public Boolean RemoteOnly
{
get
{
return (Boolean)this["remoteOnly"];
}
set
{
this["remoteOnly"] = value;
}
}
// Create a "domain" element.
[ConfigurationProperty("domainName")]
public DomainElement Domain
{
get
{
return (DomainElement)this["domainName"]; }
set
{ this["domainName"] = value; }
}
}
然后您在 configSections 节点中声明您的配置部分:
<configSections>
<sectionGroup name="disAllowDomainsGroup">
<section
name="disallowDomains"
type="your.class.definition"
allowLocation="true"
allowDefinition="Everywhere"
/>
</sectionGroup>
</configSections>
然后声明动作部分:
<configuration>
<!-- Configuration section settings area. -->
<disallowDomainsGroup>
<disallowDomain remoteOnly="true">
<domainName="www.google.com" />
</dissallowDomain>
</disallowDomainsGroup>
</configuration>
最后,您创建一个 ActionFilterAttribute 以获取不允许的域列表和 redirect/restrict 用户(如果他们来自该域)。
您可以像这样访问新创建的 webconfig 部分:
DomainsDisallowedSection config =
(DomainsDisallowedSection)System.Configuration.ConfigurationManager.GetSection(
"disallowDomainsGroup/disallowDomains");
然后遍历您不允许的域并使用
HttpContext.Current.Request.Url.Host
将不允许的域与请求域匹配。但如前所述,这可以很容易地被知道如何绕过的人绕过。
没有直接的方法不允许特定 domain.You 只能限制某些 IP。您始终可以使用 nslookup 将域映射到其 IP 地址。
<security>
<ipSecurity allowUnlisted="true">
<clear/> <!-- removes all upstream restrictions -->
<add ipAddress="83.116.19.53"/>
</ipSecurity>
</security>
我想在 web.config 中为我的应用程序限制一个域。我该怎么做?我刚刚找到了 IIS 设置的解决方案,例如
<add ipAddress="some_ip_address" />
但我想限制一个域,而不是 IP 地址
在 IIS 管理器中:
- Select 所需站点。
- 在“主页”窗格中,打开“IP 地址和域限制”。
- 在操作窗格中,启动编辑功能设置...
- 选中启用域名限制复选框
- 点击[确定]退出。
您现在可以像添加 IP 地址一样添加域名。
注意:这不能通过 web.config 完成。设置存储在 ApplicationHost.config 中。不过,您将必须 访问 IIS 管理器以启用 IP 和域安全。没有办法解决这个问题。
<ipSecurity enableReverseDns="true">
<add ipAddress="192.168.0.1" allowed="false" />
<add domainName="google.com" allowed="false" />
</ipSecurity>
web.config 中没有直接设置来执行此操作。但是,您可以在 web.config 中创建自定义集合以列出您的域,并编写自定义请求处理程序或自定义操作过滤器来阻止特定域。 但是这很容易被欺骗或绕过。这是一个例子:
你的配置部分 class:
public class DisallowedDomainsSection : ConfigurationSection
{
// Create a "remoteOnly" attribute.
[ConfigurationProperty("remoteOnly", DefaultValue = "false", IsRequired = false)]
public Boolean RemoteOnly
{
get
{
return (Boolean)this["remoteOnly"];
}
set
{
this["remoteOnly"] = value;
}
}
// Create a "domain" element.
[ConfigurationProperty("domainName")]
public DomainElement Domain
{
get
{
return (DomainElement)this["domainName"]; }
set
{ this["domainName"] = value; }
}
}
然后您在 configSections 节点中声明您的配置部分:
<configSections>
<sectionGroup name="disAllowDomainsGroup">
<section
name="disallowDomains"
type="your.class.definition"
allowLocation="true"
allowDefinition="Everywhere"
/>
</sectionGroup>
</configSections>
然后声明动作部分:
<configuration>
<!-- Configuration section settings area. -->
<disallowDomainsGroup>
<disallowDomain remoteOnly="true">
<domainName="www.google.com" />
</dissallowDomain>
</disallowDomainsGroup>
</configuration>
最后,您创建一个 ActionFilterAttribute 以获取不允许的域列表和 redirect/restrict 用户(如果他们来自该域)。
您可以像这样访问新创建的 webconfig 部分:
DomainsDisallowedSection config =
(DomainsDisallowedSection)System.Configuration.ConfigurationManager.GetSection(
"disallowDomainsGroup/disallowDomains");
然后遍历您不允许的域并使用
HttpContext.Current.Request.Url.Host
将不允许的域与请求域匹配。但如前所述,这可以很容易地被知道如何绕过的人绕过。
没有直接的方法不允许特定 domain.You 只能限制某些 IP。您始终可以使用 nslookup 将域映射到其 IP 地址。
<security>
<ipSecurity allowUnlisted="true">
<clear/> <!-- removes all upstream restrictions -->
<add ipAddress="83.116.19.53"/>
</ipSecurity>
</security>