前端什么情况下需要过滤用户的输入? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
waiaan
V2EX    Javascript

前端什么情况下需要过滤用户的输入?

  •  
  •   waiaan 2020-02-14 11:16:04 +08:00 4143 次点击
    这是一个创建于 2071 天前的主题,其中的信息可能已经有所发展或是发生改变。

    谢谢。

    第 1 条附言    2020-02-17 10:58:26 +08:00
    是过滤,防止攻击,不是校验。
    23 条回复    2020-02-15 14:00:08 +08:00
    xingyuc
        1
    xingyuc  
       2020-02-14 11:19:38 +08:00 via Android   1
    任何情况下
    waiaan
        2
    waiaan  
    OP
       2020-02-14 11:27:12 +08:00
    @xingyuc 能否讲讲为什么?谢谢。
    timothyqiu
        3
    timothyqiu  
       2020-02-14 11:29:11 +08:00   10
    前端过滤用户输入的目的是提高用户体验,后段过滤用户输入的目的是维持业务逻辑正确和安全。
    bzw875
        4
    bzw875  
       2020-02-14 11:31:32 +08:00
    跨站脚本攻击( Cross Site Scripting )的时候
    Austaras
        5
    Austaras  
       2020-02-14 11:32:35 +08:00
    3l 是对的
    sonxzjw
        6
    sonxzjw  
       2020-02-14 11:34:37 +08:00   1
    同意 1 楼的

    有一个原则 [系统在任何时候都不能相信用户的所有输入] ,所以任何情况下都需要过滤验证。为了安全性、健壮性。
    murmur
        7
    murmur  
       2020-02-14 12:35:13 +08:00
    校验可以提高体验,但是做多少过滤后端都不能省
    涉及可能有用户输入显示的地方必须做 XSS 过滤
    chen1164162915
        8
    chen1164162915  
       2020-02-14 12:50:19 +08:00
    前端不需要过滤,后端需要
    mnssbe
        9
    mnssbe  
       2020-02-14 12:52:29 +08:00 via iPhone
    前端可以检测数据格式,不需要过滤
    tslling
        10
    tslling  
       2020-02-14 12:53:33 +08:00 via Android   2
    认同 4 楼的看法。但是我记得以前 v2 上有个人发帖求打车软件不要在前端校验手机号码了,所以前端校验的话要注意保持更新,不然提升体验的就可能变成降低体验甚至不可用啦。


    @sonxzjw 建议看看 4 楼的原则,你说的考虑更适合在后端过滤
    vicvinc
        11
    vicvinc  
       2020-02-14 13:00:00 +08:00 via iPhone
    同 3
    wooyuntest
        12
    wooyuntest  
       2020-02-14 13:00:21 +08:00
    always
    MeteorCat
        13
    MeteorCat  
       2020-02-14 13:01:15 +08:00 via Android
    同 3
    sonxzjw
        14
    sonxzjw  
       2020-02-14 13:07:27 +08:00
    @tslling 我还是保留原来的意见。为了体验而降低安全性或者只靠后端我认为不可取。
    为了寻找平衡点,有些地方需要放弃。就如同数据库设计的逆范式一样。

    目前前端已经都有 nodejs 之类的前端了,前端已经或者很多时候需要做更多的逻辑处理了,安全性的要求已经不比后端低多少了。如果是 163 时代的话还可以这样做。

    目前国内很多系统、app 都有很好的体验性,但却存在很大的安全隐患,只是尚未爆发而已。这是后话,展开就大了。

    谢谢你建议,体验感能在前期对系统更迅速的获得认同,就取决于设计者了。
    Xusually
        15
    Xusually  
       2020-02-14 13:11:38 +08:00
    任何时候
    shaohan0228
        16
    shaohan0228  
       2020-02-14 13:17:46 +08:00
    任何情况下
    mostkia
        17
    mostkia  
       2020-02-14 13:23:59 +08:00
    1 有条件的情况下:任何时候都要过滤用户输入。
    2 基于安全考虑的过滤:任何会被保存的输入内容(但一般输入的内容都会被保存,所以基本等价于第一条)
    mostkia
        18
    mostkia  
       2020-02-14 13:26:02 +08:00
    补充一下,前台过滤不等于后台无需过滤,安全性来讲,关键还是在后台,前台只能防君子,不防小人(一般前台只是为了提高用户体验而过滤输入)。
    otakustay
        19
    otakustay  
       2020-02-14 14:29:34 +08:00
    前端的过滤和校验是为了给用户更好的体验,不是为了安全性
    所以什么时候:能够给用户更好的体验的时候
    jybox
        20
    jybox  
       2020-02-14 16:03:33 +08:00
    不必要过滤输入,但必须要过滤(转义)输出,否则对于会显示来自其他用户输入的内容的网站,就会有跨域脚本攻击( XSS )的风险。很多人没有意识到这一点是因为大部分的前端框架(如 React )都是默认会对所有的输出进行转义的。
    huijiewei
        21
    huijiewei  
       2020-02-14 16:05:21 +08:00
    前端验证是提高用户体验的
    lemon6
        22
    lemon6  
       2020-02-14 17:07:54 +08:00
    账号登录注册的文本框,过滤掉前后空格,因为用户喜欢复制,会多复制空格导致密码错误。
    xingyuc
        23
    xingyuc  
       2020-02-15 14:00:08 +08:00 via Android
    @waiaan 三楼说的对,而且就算前台不校验手机号,身份证号等,也要判断格式是否是想要的不会出现数字框出现汉字
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     901 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 22:04 PVG 06:04 LAX 15:04 JFK 18:04
    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