最近撸了个 go 过滤 xss 库 go-xss,发现官方库的 regexp 效率有待提高

2021-01-13 09:22:39 +08:00
 nodesolar
https://github.com/feiin/go-xss 发现官方库的 regexp 效率有待提高
2956 次点击
所在节点    Go 编程语言
11 条回复
maja
2021-01-13 09:51:58 +08:00
xss 应该在 render 的时候防范而不是 input 。
MonoBiao
2021-01-13 09:52:19 +08:00
hyperscan ?
hanssx
2021-01-13 09:57:53 +08:00
@maja 像富文本这种预先就定义好语义的,是不是在 input(source)比较好呢
nodesolar
2021-01-13 09:58:20 +08:00
看需求了 有些场景 input 就要过滤下
maja
2021-01-13 10:04:49 +08:00
input 做 xss filter 是万恶之源。

何况用 regex 做 xss filter....
reus
2021-01-13 10:21:55 +08:00
正确做法是用标准库的 encoding/xml,然后用 Decoder.Token 读出 token 流,然后过滤,然后用 Encoder.EncodeToken 生成文本。
用正则解析 html 是错误做法。追求性能前,先保证正确性吧。
nodesolar
2021-01-13 10:25:14 +08:00
也不是完全正则,按字符在解析的.
keepeye
2021-01-13 10:28:32 +08:00
go 的正则库貌似不支持 ?! 语法,原因据说是因为影响效率..
nodesolar
2021-01-13 10:36:57 +08:00
@keepeye 是的 re2 引擎不支持
Mitt
2021-01-13 15:01:50 +08:00
xss 在后端过滤还是在前端过滤的话题只要一开 每次都能吵起来,我是觉得后端能做的太少了,绕过的可能性也很大,前端反而有更多控制手段
nodesolar
2021-01-15 13:54:28 +08:00
@Mitt 哈哈哈
PHP 是世界最好的语言.

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

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

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

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

© 2021 V2EX