代码之家  ›  专栏  ›  技术社区  ›  Janis Veinbergs

将超链接连接到字符串的正确方法

  •  1
  • Janis Veinbergs  · 技术社区  · 15 年前

    将字符串与内部URL正确连接的最佳方法是什么?这样可以吗?

    String.Format("This is the link: <a href={0}>{1}</a>", somevalue1, somevalue2)
    

    或者它可能会为注射攻击敞开大门?

    那么,如何在字符串中插入超链接呢?

    我想我可以处理超链接类,但是是否有任何属性返回类对象的HTML代码?

    5 回复  |  直到 15 年前
        1
  •  6
  •   Matthew Flaschen    15 年前

    以下用途 HyperLink 而且应该有效。但是,首先考虑您是否真的需要一个中间字符串。

    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    using System.IO;
    
    HyperLink link = new HyperLink(){NavigateUrl="http://stackoverflow.com", Text = "StackOverflow"};
    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    link.RenderControl(htw);
    sw.Close();
    String rendered = sw.ToString();
    
        2
  •  3
  •   Blixt    15 年前

    为了避免HTML注入,您可以这样做:

    String.Format("This is the link: <a href=\"{0}\">{1}</a>",
        HttpUtility.HtmlEncode(somevalue1), HttpUtility.HtmlEncode(somevalue2))
    

    不要使用 UrlEncode 对于HTML值(属性和文本),因为它看起来很混乱。 乌伦码 用于查询字符串值,即 page.aspx?param=value+that+has+been+encoded

        3
  •  1
  •   User    15 年前

    您错过了报价:

    String.Format("This is the link: <a href=\"{0}\">{1}</a>", somevalue1, somevalue2)
    
        4
  •  1
  •   colithium    15 年前

    This 本文讨论如何以安全的方式使用 HttpUtility.UrlEncode .

        5
  •  0
  •   Canavar    15 年前

    如果你把你从客户那里得到的信息设置到链接'!S HREF,它总是导致注射攻击的后门。

    你应该使用 HttpUtility.UrlEncode 对链接的查询字符串进行编码,以获取安全链接。