找回密码
 欢迎注册
查看: 5772|回复: 11

[分享] Discuz论坛的SVG图片支持

[复制链接]
发表于 2019-1-3 15:42:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
最近几天为了支持svg. 论坛的后台也被我翻了无数遍了。

最终抽空在本地的ArchLinux里搭建了一个Discuz论坛。Discuz据说以后只在git库上发布。http://www.discuz.net/thread-3825961-1-1.html
最新的代码https://gitee.com/ComsenzDiscuz/DiscuzX。截个图晒一把最近的成果:

Screenshot_2019-01-03_15-53-40.png

======
目前整理出了一个思路:
由于所有图片附件都会存在一个目录upload/data/attachment里。 后缀名不变,只是文件名被转成hash值了。我们找到对应的代码,然后在显示内容的地方增加


====SVG上传带来的安全性问题

另外,据说svg可以内嵌javascript语言,对服务器是很严重的安全隐患,所以我们到底加不加这个feature呢,
安全问题也是很多服务器不支持客户端上传svg图片的主要原因,https://kinsta.com/blog/wordpress-svg/
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-1-3 18:05:11 | 显示全部楼层
经过本地测试,下面的代码可以在php页面显示svg文件。直接黏贴代码,会被宝塔给拦截,所以就提供附件了。

a.html

378 Bytes, 下载次数: 8, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-1-3 18:20:13 | 显示全部楼层
原来我的一个自以为简单的请求引出怎么多学问

点评

SVG是XML文本,Discuz是用PHP写的,会把内容原封不动的展开,嵌入到页面。所以这个用户上传的内容有太大的灵活度了,服务器完全失控  发表于 2019-1-3 20:12
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-1-3 22:27:31 | 显示全部楼层
zeroieme 发表于 2019-1-3 18:20
原来我的一个自以为简单的请求引出怎么多学问

github上找到一个工具,可以对用户上传的svg图片进行安全性检测和清理,https://github.com/darylldoyle/svg-sanitizer
在线测试工具:http://svg.enshrined.co.uk/
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-1-4 09:19:37 | 显示全部楼层
除了钱,啥都不是问题,
关键郭老板没钱,
不过可以搞个众筹,
搞图片很费钱的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-1-4 21:58:50 | 显示全部楼层
mathematica 发表于 2019-1-4 09:19
除了钱,啥都不是问题,
关键郭老板没钱,
不过可以搞个众筹,

你这看明白问题没有。这是技术问题。。。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-1-4 22:00:10 | 显示全部楼层
后缀名会变吧,至少一般的附件会变,常见的图片不会变。

我那天在论坛上搜索了所有的带有jpg的php源码,然后找到所有的数组,都添加上svg后缀,然而还是不生效...放弃了

点评

通过上传图片操作,而不是上传附件操作就会有svg文件。但这个要改多个源码文件  发表于 2019-1-5 10:46
但我在论坛的附件目录好像找不到svg文件  发表于 2019-1-4 22:34
本地安装了Discuz, 测试过,svg和png图片附件的后缀名都不变。  发表于 2019-1-4 22:06
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-1-5 10:41:16 | 显示全部楼层
悲剧,固态硬盘挂了,系统全没了,又花了几个小时的时间安装了Ubuntu系统,搭建好了Discuz,测试了下:
1)上传操作的时候如果点的是图片,不改后缀名,改名字
2)上传操作的时候如果点的是附件,改后缀名和名字

之前我改了多处文件,支持上传图片的方式上传svg,发现data/attachment/目录下有*.svg文件。 考虑到安全问题,得有必要把用户上传的svg文件都给扫描一遍,去掉安全隐患的字段。


Screenshot from 2019-01-05 10-40-23.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-24 05:35 , Processed in 0.572498 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表