想问大厂前端怎么防 XSS 攻击的? 靠前端写的时候注意,还是有专门的负责安全的人 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
supermaryy
V2EX    程序员

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

  •  1
     
  •   supermaryy 2018-06-25 16:03:05 +08:00 10360 次点击
    这是一个创建于 2675 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    13 条回复    2025-08-19 13:39:36 +08:00
    luoway
        1
    luoway  
       2018-06-25 16:38:09 +08:00
    前端自己写,然后找专人检查
    有专门的库 jsxss.com
    AV1
        2
    AV1  
       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
        3
    enhancer  
       2018-06-25 17:23:43 +08:00
    从输入的角度来讲:
    攻击者可以绕过前端直接伪造 http 请求输入包含富文本的内容,所以防范一定是在服务器端做的,只不过后端同学有可能不知道怎样的 html 是合法安全,怎样不安全,需要前端配合告知白名单。
    从输出的角度来讲:
    前端拿到字符串去页面渲染的时候应该根据业务需要决定哪些标记不能出现,哪些可以,现在的模板渲染都自带了 富文本转义,防止 XSS 攻击。enhancer.io
    seancheer
        4
    seancheer  
       2018-06-25 19:11:28 +08:00
    虽然不是前端。但是一般都会有相应的安全部门来扫描测试。
    开发自身也需要具备相应的安全知识,写出非常常见的漏洞有的公司是会被通报批评的。
    huilliuh
        5
    huilliuh  
       2018-06-25 19:12:25 +08:00 via Android
    xsser 自己扫一边:)
    supermaryy
        6
    supermaryy  
    OP
       2018-06-25 19:58:48 +08:00
    @huilliuh 竟然还有这种工具,谢谢,开阔了眼界
    MeteorCat
        7
    MeteorCat  
       2018-06-25 20:00:07 +08:00 via Android
    防止 XSS 在后端防护比较常见吧
    badcode
        8
    badcode  
       2018-06-25 21:15:12 +08:00 via iPhone
    input: 前端过滤,入库,后端过滤
    output: 后端过滤,输出,前端过滤
    shew2356
        9
    shew2356  
       2018-06-26 12:16:18 +08:00 via iPhone   1
    前后端数据交互的时候 encode 之后,或者 base64 一下,能解决你百分之八十的问题
    nakupanda
        10
    nakupanda  
       2018-06-26 15:06:43 +08:00
    我只注意到楼主站在船上拍照
    supermaryy
        11
    supermaryy  
    OP
       2018-07-01 10:56:26 +08:00
    @shew2356 是不是前后端数据交互的时候只用 encode 就行,但是输出数据的时候还是要把特殊符号替换为 html 实体,因为 decode 出来的字符串还是包含</>这些特殊符号,不替换的话恶意代码还是会执行?
    shew2356
        12
    shew2356  
       2018-07-01 20:08:47 +08:00 via iPhone
    @supermaryy 可以这么理解,数据还可以加密传输,意思是后端解数据的时候,必须 decode 或者解码,就算有恶意执行代码,在后端解析的时候就被拦截了,所以能达到目的
    wxf1259059284
        13
    wxf1259059284  
       63 天前 via iPhone
    大厂好像压根不防。谷歌地图好像也有 xss 漏洞,参数后面追加任意 url ,比如?url=https://www.huociyuan.com
    完整 url 是 https://maps.google.com/url?q=https://www.huociyuan.com/
    页面有回显,链接可点击,这应该是 xss 了吧?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     930 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 21:20 PVG 05:20 LAX 14:20 JFK 17:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86