我认为使用 React 的dangerouslySetInnerHTML
属性将从服务器获取的标记放置在页面上是很常见的,即
const SomeComponent = () => {
const [markup, setMarkup] = useState(null)
useEffect(() => {
const resp = await fetch(...)
setMarkup(resp.content)
})
return <div dangerouslySetInnerHTML={{ __hmtl: markup }} />
}
如果这是另一种情况,并且标记来自页面上的表单,这显然会带来风险,因为您无法信任表单上输入的数据,而且我们不会在此处进行任何清理。
但是,我们将从服务器返回的数据放在页面上,因此可能存在某种程度的信任。对服务器的调用发生在代码中,大概我们知道我们正在调用的 API。
但是,即使我们信任服务器,考虑来自受信任服务器的数据实际上是不明智的吗?在数据返回之前,不良行为者可以干预网络吗?