2016-11-15 75 views
-2

我试图在网站上显示来自一个用户的消息到另一个用户。消息使用HTML保存在数据库中。使HTML显示为链接

为什么网站上的HTML显示出来,而不是将HTML变成链接或换行符?

下面是代码:

<div class="jumbotron"> 
    <h4><u>Your Messages</u></h4> 
    @foreach (var m in Model.User.MessagesUsers) 
    { 
     <p>@m.Message</p> 
    } 
</div> 
+2

出于安全原因,它转义所有的html标签。你在用什么框架? – yper

+0

请说明您的具体问题或添加其他详细信息,以确切地突出显示您的需求。正如目前所写,很难确切地说出你在问什么。请参阅[问]页面以获得澄清此问题的帮助。 –

+0

这不是纯粹的HTML和CSS。 –

回答

3

看起来你正在使用ASP.NET MVC。出于安全原因,框架会自动对输出进行HTML编码。

让您可以通过using @Html.Raw

<p>@Html.Raw(m.Message)</p> 

注意然而,这是规避安全。确保你信任你的数据。这就是跨站点脚本攻击的发生。您也可能想要查看诸如Markdown之类的内容,以允许用户输入您有更多控制权的标记。

+0

那么没有办法解决这个问题,而不会让自己面临安全风险? –

+0

@ N.Sch:这取决于许多因素。如果您允许用户输入要显示给他们或其他用户的数据,而不对其进行HTML编码,那么这对其他用户来说会造成安全风险。 (即使是HTML编码也可能存在风险,我不知道其中的一种,但这并不意味着没有一种)。如果您信任数据源,则风险较低。但请记住,“信任”并不一定意味着“登录的用户发布了它。”登录的用户可以做恶意的事情。 – David

+0

最安全的方法是不允许用户输入HTML,允许降价(或类似的东西)并将其转换为HTML,然后它是安全的(针对XSS) –