2016-07-27 124 views
1

我通过我的初始状态像我没有做任何事情,以防止XSS以下React服务器端渲染 - window.initialState - 如何防止XSS?

window.__INITIAL_STATE__= ${JSON.stringify(initialState)} 

反应。例如,如果其中一个用户提交的内容具有下面的字符串。 "<script>***</script> "

这不幸中断了html源代码中的脚本标记。它返回一个错误,指定ILLEGAL TOKEN

所以我想在服务器端使用这样的东西。

${JSON.stringify(initialState).replace(/</g, '\\u003c') 

它现在工作,但是有没有更好的方法来处理在这种情况下传递初始状态?上面提供的正则表达式涵盖了所有潜在的漏洞吗?

我正在考虑通过api传递一个json对象,如果这可能导致问题。

+0

为什么初始化状态有里面的脚本元素? – kinakuta

+0

你也需要转义'\ u2028 \ u2029'。 http://stackoverflow.com/a/9168133/351705 –

+0

@kinakuta - 它包含用户提交的内容..只是想确保xss被阻止 – Kannaj

回答

0

可以this解决你的问题?

它就像JSON.stringify但自动逃脱危险特性