我们应该如何验证HTTP头引荐在ASPX .NET
-
21-08-2019 - |
题
我要确保确保一个错误页面上没有任何不幸进入引荐。
我应该以验证HTTP报头进行检查。
下面是我当前的代码:
// Ensure the referrer header is good
if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host))
{
这将无法使用%3C和%3E代替<和>例如,所以我显然需要支付的HTML编码的扫描的Acunetix - ?还有什么事我是缺少
<强>更新强> 我可以使用下面的代码捕获所有的扫描的Acunetix:
if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host) &&
!Regex.IsMatch(this.Request.UrlReferrer.ToString(),
"%3C",
RegexOptions.IgnoreCase))
{
解决方案
我要确保确保一个错误页面上没有任何不幸进入引荐。
然后总是HTML的转义任何字符串 - 包括引荐网址 - 您输出到错误页面
试图挑选出和含有上的情况下,逐个潜在危险的字符黑名单输入向后做。你可能不会捕获所有可能的攻击,你会不必要地禁止合法的URL。 (这是完全合理的,具有与在“%3C”的URL。)
其他提示
this.Request.UrlReferrer可以为空,如果没有被引荐提供或已参加。
不隶属于 StackOverflow