网络编程
位置:首页>> 网络编程>> php编程>> 百度编辑器复制微信图片无法保存

百度编辑器复制微信图片无法保存

作者:半山  发布时间:2023-08-14 17:32:46 

标签:百度编辑器,图片

00 小编的问题

小编向我们反馈,从微信里复制出来的图片,会被微信屏蔽,无法显示
我们后天采用的是百度编辑器,而且已经做了远程图片本地化,于是检查微信的图片地址。
随便打开一篇微信文章,发现其图片地址如下:

http://mmbiz.qpic.cn/mmbiz_jpg/QeUoMcnKBk25dgQG6qxeicwFbSytxtia6EgAYiakC7JXJhss25yYQKwUC8w8SBibjfQjicAHOn4DoFHrEiaBQWncYFfg/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

可以看到这个地址和平常的图片地址不一样,没有jpg、png等图片后缀,用浏览器保存后,为webp格式。

01 怀疑本地化代码

检查本地化代码,发现确实有通过后缀判断的地方,但是默认为jpg后缀。

02 检查前端

后端检查没有发现问题,于是又查看前端,打断点,定位到复制图片的js代码段,发现如下:
百度编辑器复制微信图片无法保存
原来编辑器会保存图片的旧地址,并和后端发回的旧地址比较,如果不相等,不会替换为发回的新地址,这个机制还是比较严谨的。
看上图,发现后端发回的旧地址,对“&”进行了转义,于是旧地址比较不相等,所以没有替换为本地化后的新地址。

03 继续检查后端

问题又回到后端了,找到发回的相关代码,如下:
百度编辑器复制微信图片无法保存
原来是htmlspecialchars的原因,但是这个又不能去掉,防止xss攻击,那么转义后,再把“&”替换回来,即:

str_replace("&","&",htmlspecialchars($imgUrl,ENT_QUOTES))

上面的ENT_QUOTES 是为了让htmlspecialchars把单引号也转义,更加安全。

来源:https://www.cnblogs.com/xdao/p/ueditor_wechat_image.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com