V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
imxz
V2EX  ›  问与答

防范 xss 使用 htmlspecialchars 够了吗?

  •  
  •   imxz · 2014-12-13 13:26:33 +08:00 · 3656 次点击
    这是一个创建于 3424 天前的主题,其中的信息可能已经有所发展或是发生改变。
    php程序。

    用户输入数据在存入数据库前 先 htmlspecialchars($data);

    前台显示的时候 直接从数据库取出来然后 echo $data;

    这样是否ok? 会有哪些潜在的危险 ?

    还有什么更好的处理方式 ?

    谢谢 !
    12 条回复    2014-12-13 23:07:09 +08:00
    kmvan
        1
    kmvan  
       2014-12-13 13:31:59 +08:00
    我认为输入前不用处理(但要注意sql注入),输出前才去处理这样比较好,wp就是这样的。
    (貌似我很多回答都拿 WP 做盾牌:D)
    imxz
        2
    imxz  
    OP
       2014-12-13 13:40:43 +08:00
    @kmvan 谢谢你的回复。

    也就是说数据库中就原样存储用户的输入数据,然后在输出前进行处理?

    输入输出前处理有何区别呢 ?
    invite
        3
    invite  
       2014-12-13 13:44:43 +08:00
    要这么容易,还需要防XSS?
    adjusted
        4
    adjusted  
       2014-12-13 13:51:57 +08:00
    直接输出应该不会有问题吧
    imxz
        5
    imxz  
    OP
       2014-12-13 14:03:49 +08:00
    @invite 说点有质量的观点比较有意义。
    txlty
        6
    txlty  
       2014-12-13 14:11:15 +08:00
    防xss难点是富文本编辑器。
    shuimugan
        7
    shuimugan  
       2014-12-13 14:43:38 +08:00   ❤️ 1
    htmlspecialchars一般只能防范非富文本的内容
    要是用了ueditor,tinyMCE之类的富文本编辑器,直接过滤html标签与<>这些敏感字符是不行的,php过滤富文本的库个人推荐htmlpurifier,但是针对富文本的过滤一般比较占用资源,建议入库前过滤
    imxz
        8
    imxz  
    OP
       2014-12-13 15:18:24 +08:00
    @shuimugan 非常感谢!
    Ryans
        9
    Ryans  
       2014-12-13 20:04:14 +08:00
    DOM XSS 有无了解?
    imxz
        10
    imxz  
    OP
       2014-12-13 20:40:16 +08:00
    @Ryans 谢谢 我去了解下
    zomco
        11
    zomco  
       2014-12-13 23:00:25 +08:00
    我的理解是,XSS本质上是输出点存在恶意脚本,输入什么是不用管的,输出点做好敏感字符过滤就可以了。再有,输入时做过滤的话,存到数据库里信息已经有损的了。。。
    imxz
        12
    imxz  
    OP
       2014-12-13 23:07:09 +08:00
    @zomco 谢谢你!

    我也是认为输入做过滤的话会对信息有损,但是我又考虑到性能,输入只做一次处理就够了,以后显示信息就可以无脑输出,但是把过滤放到输出来处理的话,则每次输出都要处理一次,感觉对性能会有损。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1696 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:44 · PVG 00:44 · LAX 09:44 · JFK 12:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.