React 应用中最常见的XSS漏洞以及防御手段
笔者一直是坚定地React技术栈的使用者,因此也会关注React应用安全相关的话题。笔者在我自己的React+Redux+Webpack2脚手架的第三层级也使用了大量的服务端渲染/同构直出的技术,而本文即是阐述该方法可能存在的某个XSS漏洞。服务端渲染即允许我们在服务端进行HTML渲染,并且在服务端请求部分应用数据追加到页面上然后随着页面一起返回给用户,从而减少用户的首屏等待时间,并且对于搜索引擎有更友好的优化。 export default (html,initialState = {},scripts = [],styles = []) => { return ` <!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" /> ${styleMapper(styles)} </head> <body> <div id="root">${html}</div> </body> ${scriptMapper(scripts)} <script> window.__INITIAL_STATE__ = ${JSON.stringify(initialState)}; </script> </html> `; }; 我们直接使用 { user: { username: "NodeSecurity",bio: "as</script><script>alert('You have an XSS vulnerability!')</script>" } } 你就会很开心的看到你得到了某个弹窗。关于XSS的知识点笔者不在这里赘述,虽然我们的后台开发人员肯定也在他们的接口层与数据库层完成了敏感字段过滤,不过千里之堤毁于蚁穴,我们不能放过任何一处有可能产生问题的地方。
Yahoo的工程师已经提供了一个Serialize JavaScript模块帮我们轻松地进行JSON转码与过滤,我们可以直接使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |