在剃刀中如何从数据库链接到外部URL

时间:2018-09-18 16:15:35

标签: c# asp.net asp.net-mvc

在我的剃须刀页面上。

<p>
    <span>Website: </span>
    <span>
        <a href="@(Url.Encode(Model.PrimaryInfo.WebsiteUrl))" target="_blank">@Model.PrimaryInfo.WebsiteUrl</a>
    </span>
</p>

当我检查看到的元素时。 该页面显示为

  

网站:https://www.mywebsite.org/

当我检查元素时得到

<a href="https%3a%2f%2fwww.mywebsite.org%2f" target="_blank">https://www.mywebsite.org/</a>

当我单击链接时,我会得到

  

[HttpException(0x80004005):潜在危险的Request.Path   从客户端(:)检测到值。]
  System.Web.HttpRequest.ValidateInputIfRequiredByConfig()+9939972
  System.Web.PipelineStepManager.ValidateHelper(HttpContext上下文)+53

2 个答案:

答案 0 :(得分:1)

尝试使用

public static class LinkHelper{
public static string ExternalLink(this HtmlHelper helper, string url, string text)
    {
        return String.Format("<a href='http://{0}' target="_blank">{1}</a>", url,text);
}}

在视野中

@Html.ExternalLink("www.google.com", "Google")

答案 1 :(得分:1)

这是您的清单:

  1. 未使用非Unicode数据类型:验证您将URL作为NVarChar类型存储在数据库中,并且不使用VarChar

  2. 无需编码:删除编码。

  3. 确认您没有违反.Net的请求验证方案。 请参考hanslman的文章: https://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx