想问大厂前端怎么防 XSS 攻击的? 靠前端写的时候注意,还是有专门的负责安全的人

2018-06-25 16:03:05 +08:00
 supermaryy

以我在小中厂的前端工作经历,XSS 防护从来就像鬼,听过没见过或者说重视程度低。我通过一些技术博客了解到前端方面防护 XSS 主要是对用户输入进行特殊字符过滤转义为 html 实体,对输出的数据进行编码,以及最好的方法是用 html 解析库对输入数据进行解析获取其中数据,然后根据这些数据和白名单重新构建 html 内容。

然后问题就是,具体实践时,前端是要在开发时就要兼顾做到上面这些,还是会有专门负责安全的人员定期检查测试页面安全性并修改前端代码,还是有专门的库可以提供相应的功能

9182 次点击
所在节点    程序员
12 条回复
luoway
2018-06-25 16:38:09 +08:00
前端自己写,然后找专人检查
有专门的库 jsxss.com
DOLLOR
2018-06-25 16:57:56 +08:00
传统的 jQuery 开发,常常用字符串拼接方式来生成 dom 结构,且不做过滤和转义,是导致 xss 攻击主要原因。
现代 web 开发框架如 vue.js 、react.js 等,在设计的时候就考虑了 XSS 攻击,对 html 插值进行了更进一步的抽象、过滤和转义。
如 vue.js 避免使用 v-html,react.js 避免使用 dangerouslySetInnerHTML。可以在大部分情况下避免 XSS 攻击。
enhancer
2018-06-25 17:23:43 +08:00
从输入的角度来讲:
攻击者可以绕过前端直接伪造 http 请求输入包含富文本的内容,所以防范一定是在服务器端做的,只不过后端同学有可能不知道怎样的 html 是合法安全,怎样不安全,需要前端配合告知白名单。
从输出的角度来讲:
前端拿到字符串去页面渲染的时候应该根据业务需要决定哪些标记不能出现,哪些可以,现在的模板渲染都自带了 富文本转义,防止 XSS 攻击。enhancer.io
seancheer
2018-06-25 19:11:28 +08:00
虽然不是前端。但是一般都会有相应的安全部门来扫描测试。
开发自身也需要具备相应的安全知识,写出非常常见的漏洞有的公司是会被通报批评的。
huilliuh
2018-06-25 19:12:25 +08:00
xsser 自己扫一边:)
supermaryy
2018-06-25 19:58:48 +08:00
@huilliuh 竟然还有这种工具,谢谢,开阔了眼界
MeteorCat
2018-06-25 20:00:07 +08:00
防止 XSS 在后端防护比较常见吧
badcode
2018-06-25 21:15:12 +08:00
input: 前端过滤,入库,后端过滤
output: 后端过滤,输出,前端过滤
shew2356
2018-06-26 12:16:18 +08:00
前后端数据交互的时候 encode 之后,或者 base64 一下,能解决你百分之八十的问题
nakupanda
2018-06-26 15:06:43 +08:00
我只注意到楼主站在船上拍照
supermaryy
2018-07-01 10:56:26 +08:00
@shew2356 是不是前后端数据交互的时候只用 encode 就行,但是输出数据的时候还是要把特殊符号替换为 html 实体,因为 decode 出来的字符串还是包含</>这些特殊符号,不替换的话恶意代码还是会执行?
shew2356
2018-07-01 20:08:47 +08:00
@supermaryy 可以这么理解,数据还可以加密传输,意思是后端解数据的时候,必须 decode 或者解码,就算有恶意执行代码,在后端解析的时候就被拦截了,所以能达到目的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/465696

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX