使HTML显示为链接
我试图在网站上显示来自一个用户的消息到另一个用户。消息使用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>
看起来你正在使用ASP.NET MVC。出于安全原因,框架会自动对输出进行HTML编码。
让您可以通过using @Html.Raw
:
<p>@Html.Raw(m.Message)</p>
注意然而,这是规避安全。确保你信任你的数据。这就是跨站点脚本攻击的发生。您也可能想要查看诸如Markdown之类的内容,以允许用户输入您有更多控制权的标记。
那么没有办法解决这个问题,而不会让自己面临安全风险? –
@ N.Sch:这取决于许多因素。如果您允许用户输入要显示给他们或其他用户的数据,而不对其进行HTML编码,那么这对其他用户来说会造成安全风险。 (即使是HTML编码也可能存在风险,我不知道其中的一种,但这并不意味着没有一种)。如果您信任数据源,则风险较低。但请记住,“信任”并不一定意味着“登录的用户发布了它。”登录的用户可以做恶意的事情。 – David
最安全的方法是不允许用户输入HTML,允许降价(或类似的东西)并将其转换为HTML,然后它是安全的(针对XSS) –
出于安全原因,它转义所有的html标签。你在用什么框架? – yper
请说明您的具体问题或添加其他详细信息,以确切地突出显示您的需求。正如目前所写,很难确切地说出你在问什么。请参阅[问]页面以获得澄清此问题的帮助。 –
这不是纯粹的HTML和CSS。 –