我有一个文字控件用于显示来自数据库的HTML。我确实遇到了一些XSS问题,并实施了Anti-XSS安全运行时引擎(SRE)来自动编码所有的html标记。例如asp.net中的HTML编码问题
DB:<p align="center"></p>
防XSS编码它:
<p align="center"> </p>
然而,当我设置的从代码文本内容text属性后面,我期待的是字面控制将解码正确的html并显示呈现的版本。相反,它显示的是ENCODED版本。
因此,文字控制显示 - <p align="center"></p>
postrender。我知道这是反xss的行动,但我怎样才能获得文字控制显示呈现的HTML而不是标记?
ASPX - <asp:Literal ID="ltPageContent" runat="server"></asp:Literal>
Code behind on page load - ltPageContent.Text = getPageContent("home")'Gets HTML from DB
我在这里错过了一些简单的东西吗?
谢谢,但我不希望在aspx中有任何代码。任何解决方案在代码隐藏? –
好吧,你需要一个服务器端的html控件作为你的容器,并将你的html字符串设置为它的InnerHtml属性。例如,将
放入您的aspx页面,然后后面的代码可以是“container.InnerHtml = Server.HtmlDecode(YOUR_STRING);” –