You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将SQL Server数据库中存储的HTML标签正确渲染到HTML页面

问题原因
  • 所有现代前端框架、模板引擎默认开启了动态内容HTML转义机制:会自动将<转换为&lt;、>转换为&gt;等HTML字符实体,该设计的初衷是避免恶意用户提交的HTML/JS代码被执行,防范XSS注入攻击。
  • 你从SQL Server中取出的原始<p> this is the first post </p>内容本身是正常的,转义操作发生在前端内容渲染环节,并非数据库存储的问题。
解决方案

不同技术栈使用对应「非转义输出原始HTML」的语法即可:

  • 原生JavaScript:不要使用innerText赋值,改用innerHTML属性插入内容
    // 错误写法
    document.getElementById('content-container').innerText = contentFromDatabase
    // 正确写法
    document.getElementById('content-container').innerHTML = contentFromDatabase
    
  • Vue框架:使用v-html指令渲染内容
    <div v-html="contentFromDatabase"></div>
    
  • React框架:使用dangerouslySetInnerHTML属性
    <div dangerouslySetInnerHTML={{__html: contentFromDatabase}}></div>
    
  • Laravel Blade模板:使用{!! !!}语法输出,不要用默认的{{ }}转义语法
    <div>{!! $contentFromDatabase !!}</div>
    
  • 其他模板引擎(Thymeleaf、EJS、Django模板等):直接查阅官方文档中「原始HTML输出」「非转义输出」的对应语法即可。
安全提示

直接渲染原始HTML存在XSS攻击风险,如果你的存储的HTML内容是普通用户可提交编辑的,需要在内容入库前或者渲染前做HTML安全过滤,移除<script>标签、onclick/onload等事件属性,避免恶意代码被执行。

内容的提问来源于stack exchange,提问作者jeremy.o

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:36:03