
以我在小中厂的前端工作经历,XSS 防护从来就像鬼,听过没见过或者说重视程度低。我通过一些技术博客了解到前端方面防护 XSS 主要是对用户输入进行特殊字符过滤转义为 html 实体,对输出的数据进行编码,以及最好的方法是用 html 解析库对输入数据进行解析获取其中数据,然后根据这些数据和白名单重新构建 html 内容。
然后问题就是,具体实践时,前端是要在开发时就要兼顾做到上面这些,还是会有专门负责安全的人员定期检查测试页面安全性并修改前端代码,还是有专门的库可以提供相应的功能
2 AV1 2018 年 6 月 25 日 传统的 jQuery 开发,常常用字符串拼接方式来生成 dom 结构,且不做过滤和转义,是导致 xss 攻击主要原因。 现代 web 开发框架如 vue.js 、react.js 等,在设计的时候就考虑了 XSS 攻击,对 html 插值进行了更进一步的抽象、过滤和转义。 如 vue.js 避免使用 v-html,react.js 避免使用 dangerouslySetInnerHTML。可以在大部分情况下避免 XSS 攻击。 |
3 enhancer 2018 年 6 月 25 日 从输入的角度来讲: 攻击者可以绕过前端直接伪造 http 请求输入包含富文本的内容,所以防范一定是在服务器端做的,只不过后端同学有可能不知道怎样的 html 是合法安全,怎样不安全,需要前端配合告知白名单。 从输出的角度来讲: 前端拿到字符串去页面渲染的时候应该根据业务需要决定哪些标记不能出现,哪些可以,现在的模板渲染都自带了 富文本转义,防止 XSS 攻击。enhancer.io |
4 seancheer 2018 年 6 月 25 日 虽然不是前端。但是一般都会有相应的安全部门来扫描测试。 开发自身也需要具备相应的安全知识,写出非常常见的漏洞有的公司是会被通报批评的。 |
5 huilliuh 2018 年 6 月 25 日 via Android xsser 自己扫一边:) |