我试图了解当我们的api端点返回一个带有返回html数据的属性的json响应时,是否XSS attack的机会:
例如
https://www.link-to-my-website.com/api/v1/data
响应:
{
footer: "<a href='https://www.link-to-my-website.com'>My Link</a>"
}
,然后在React.js(或任何js前端)中执行以下操作:
import React from 'react';
import PropTypes from 'prop-types';
export default class MyFooterComponent extends React.Component {
render() {
return (
<div className="footer" dangerouslySetInnerHTML={{ __html: this.props.footer }} />
);
}
}
我会让最终用户面临风险吗?我应该消毒还是根本不以这种方式传递数据?还是我在这里太偏执?
谢谢!
答案 0 :(得分:1)
如果没有用户输入,则没有XSS问题。从owasp链接:
使这些攻击成功的缺陷非常普遍,并且在Web应用程序使用其生成的输出中未经验证或编码的情况下使用用户输入的任何地方都会发生。
如果有用户输入,则可以,您需要在发送响应并将其注入html之前专门清除该输入。
答案 1 :(得分:0)
是的,这样的实现容易受到脚本注入攻击。如果您要维护API,则可能不会成为一个大问题,但是您绝对不能使用第三方API来做到这一点。但是为了安全起见,请不要执行该实现。您可以详细了解here。