V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
IDCFAN
V2EX  ›  PHP

请教如何限定 textarea 输入的 HTML 标签

  •  
  •   IDCFAN · 2020-02-07 10:30:38 +08:00 · 3616 次点击
    这是一个创建于 1756 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有这么一个需求,限制一个 textarea 输入的 HTML 内容只支持普通字串以及链接( a 标签),其它标签(比如 img iframe embed 等等等)均不允许,JS 或者 PHP 怎样写可以在提交前或者入库的时候过滤掉除 a 标签和正常字串以外的呢?

    感觉有点类似 discuz 论坛的个人签名,一些危险 HTML 标签都不支持。

    有会的大佬能帮写个正则什么的吗?

    帮忙的大佬先祝您佛光保佑,退散恶灵,全家安康。谢谢。
    6 条回复    2020-02-10 10:01:09 +08:00
    loadinger
        1
    loadinger  
       2020-02-07 11:03:45 +08:00   ❤️ 1
    好像有个 strip_tags 之类的方法吧 ,默认是所有 html 标签都过滤了,好像有第二个还是第三个参数可以带不过滤的白名单标签。
    如果不过滤,就会存在 css javascript 的安全性问题吧。
    IDCFAN
        2
    IDCFAN  
    OP
       2020-02-07 11:06:03 +08:00
    @loadinger 谢谢啦。帮助太大了。正是我需要的。
    xiwangzishi
        3
    xiwangzishi  
       2020-02-07 11:39:54 +08:00   ❤️ 2
    PHP 的话推荐使用 http://htmlpurifier.org/
    ClericPy
        4
    ClericPy  
       2020-02-07 11:54:56 +08:00   ❤️ 1
    提交前检验只能防君子不能防小人(模拟个请求就绕过去了)
    后端简单的做个定向 escape 就好了, 不过我后端是 Python 的, 先解析 dom 然后拿到定向的几个节点强制 escape 就完事了
    hantsy
        5
    hantsy  
       2020-02-07 13:54:00 +08:00   ❤️ 1
    提交的只是 HTML 内容而已,真正控制显示才是重要。现在一般的框架由于安全考虑都不允许显示 HTML 内容,会直接 Escape。
    loadinger
        6
    loadinger  
       2020-02-10 10:01:09 +08:00   ❤️ 1
    @IDCFAN 只要有白名单,就一定 要再次过滤里面的 css 和 js,切记。正如有人说到的,htmlpurifier.org
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1555 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 17:06 · PVG 01:06 · LAX 09:06 · JFK 12:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.