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

2020-02-07 10:30:38 +08:00
 IDCFAN
有这么一个需求,限制一个 textarea 输入的 HTML 内容只支持普通字串以及链接( a 标签),其它标签(比如 img iframe embed 等等等)均不允许,JS 或者 PHP 怎样写可以在提交前或者入库的时候过滤掉除 a 标签和正常字串以外的呢?

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

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

帮忙的大佬先祝您佛光保佑,退散恶灵,全家安康。谢谢。
3592 次点击
所在节点    PHP
6 条回复
loadinger
2020-02-07 11:03:45 +08:00
好像有个 strip_tags 之类的方法吧 ,默认是所有 html 标签都过滤了,好像有第二个还是第三个参数可以带不过滤的白名单标签。
如果不过滤,就会存在 css javascript 的安全性问题吧。
IDCFAN
2020-02-07 11:06:03 +08:00
@loadinger 谢谢啦。帮助太大了。正是我需要的。
xiwangzishi
2020-02-07 11:39:54 +08:00
PHP 的话推荐使用 http://htmlpurifier.org/
ClericPy
2020-02-07 11:54:56 +08:00
提交前检验只能防君子不能防小人(模拟个请求就绕过去了)
后端简单的做个定向 escape 就好了, 不过我后端是 Python 的, 先解析 dom 然后拿到定向的几个节点强制 escape 就完事了
hantsy
2020-02-07 13:54:00 +08:00
提交的只是 HTML 内容而已,真正控制显示才是重要。现在一般的框架由于安全考虑都不允许显示 HTML 内容,会直接 Escape。
loadinger
2020-02-10 10:01:09 +08:00
@IDCFAN 只要有白名单,就一定 要再次过滤里面的 css 和 js,切记。正如有人说到的,htmlpurifier.org

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

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

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

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

© 2021 V2EX