当前位置: 首页 > 面试题库 >

如何安全地在响应中呈现HTML?

陶超
2023-03-14
问题内容

我从文本区域得到了一些用户生成的html标记,我想在屏幕的另一部分上呈现它。标记将以字符串形式保存在组件的属性中。

由于明显的原因,我不想使用危险地设置HTML。是否有诸如标记为HTML
的解析器,以便它剥离脚本标记和其他无效的html。


问题答案:

使用sanitize-html模块对html进行清理,并使用危险地 SetInnerHTML呈现经过清理的字符串。

您可以创建一个简单的包装器组件

const defaultOptions = {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
};

const sanitize = (dirty, options) => ({
  __html: sanitizeHtml(
    dirty, 
    options: { ...defaultOptions, ...options }
  )
});

const SanitizeHTML = ({ html, options }) => (
  <div dangerouslySetInnerHTML={sanitize(html, options)} />
);

用法:

<SanitizeHTML html="<img src=x onerror=alert('img') />" />

您还可以使用react-sanitized-html的SanitizedHTML组件,该组件是react包装器sanitize-html

<SanitizedHTML
  allowedAttributes={{ 'a': ['href'] }}
  allowedTags={['a']}
  html={ `<a href="http://bing.com/">Bing</a>` }
/>


 类似资料:
  • 问题内容: 好的,很简单的问题,我正在使用一种AJAX方法,它的作用是通过查询在数据库中搜索特定信息。我可以在控制台中看到正在查询,甚至可以在Chrome开发者控制台中看到“发布”,当我单击它时,可以看到要显示的HTML,但是我不知道如何在页面中显示红外线。 :3000 /已经有我要显示的html,但是我该如何更新呢? 我展示的方式是这样的… @itemsok是我从查询保存项目的变量。 谢谢,我想

  • 问题内容: 到目前为止,我已经想通了如何返回Zend框架2.首先一个典型的JSON响应,我加入到了部分配置。然后,我返回一个设置了所有变量的实例,而不是从控制器操作中返回实例。 现在,我已经弄清楚了这一点,我需要了解如何呈现视图并在该JSON响应中返回它。在ZF1中,我能够使用,将HTML作为字符串返回。在ZF2中,该方法返回。 那么…如何呈现HTML视图脚本,并在一个请求中以JSON响应返回它?

  • 假设Loadrunner报告的事务响应时间(当使用HTTP协议时)不包括呈现时间,它只是绝对响应时间(从用户单击到他从服务器得到响应),我是否正确?从用户的角度来看,如果我也想包括渲染时间,我如何度量它?

  • 问题内容: 在我的应用程序中,我将收到一个字节流,并将其转换为手机内存中的pdf文件。如何将其渲染为pdf?并在活动中显示? 问题答案: 某些手机​​(例如Nexus One)预先安装了Quickoffice版本,因此将文件保存到SD卡后,发送适当的Intent可能很容易。

  • 本文向大家介绍如何在Spring Boot应用程序中实现Spring安全性?相关面试题,主要包含被问及如何在Spring Boot应用程序中实现Spring安全性?时的应答技巧和注意事项,需要的朋友参考一下 实施需要最少的配置。您需要做的就是spring-boot-starter-security在pom.xml文件中添加starter。您还需要创建一个Spring配置类,它将覆盖所需的方法,同时