string myContent="Hello"
System.Web.UI.Webcontrols.Literal literal1=new System.Web.UI.Webcontrols.Literal();
literal1.Text="<b>" + myContent + "</b><table><tr><td>HI</td></tr></table>" ;
但是在这种情况下,我必须对文字控件文本值进行编码(原因是要防止文字控件受到XSS攻击。)。我正在使用asp.net c#。
所以我做的是
literal1.Text= AntiXssEncoder.HtmlEconde("<b>" + myContent + "</b><table><tr><td>HI</td></tr></table>");
所以输出应该是
<b>Hello</b><table><tr><td>HI</td></tr></table>
当我进行编码时,我不需要上面的输出(我的标记的纯文本)。我希望它呈现为
你好
“ HI->应该已经打印在html标记内”
我还知道,如果我对文字控件进行编码,则文字控件的结果将只是纯文本。我想对文字控件进行编码,而且我不希望我的文字控件的文本呈现为纯文本。任何帮助都是可观的。
答案 0 :(得分:0)
回答您的第一个问题:为防止XSS将文本插入Label
中,然后将其添加到类型为“ b”的HtmlGenericControl
中,用如下粗体标签将其环绕:>
HtmlGenericControl bold = new HtmlGenericControl("b");
Label myContent = new Label();
myContent.Text = "Hello and some special characters <>";
bold.Controls.add(myContent);
Label
-控件将对内部的每个特殊字符进行编码,这应该可以防止任何XSS攻击。
对于您问题的新表部分:我建议不要在Literal
内构造整个DOM。那是非常糟糕的风格,只有在没有其他方法的情况下才应使用。请改用ASP.NET API中的可用类(即Table
)。
答案 1 :(得分:0)
您可以简单地做到:
literal1.Text= "<b>" + HttpUtility.HtmlEncode(myContent) + "</b>";
或者更好的方法是,使用label-control将CSS类添加到font-weight:bold;