百度編輯器復制微信圖片無法保存


0x00 小編的問題

小編向我們反饋,從微信里復制出來的圖片,會被微信屏蔽,無法顯示
我們后天采用的是百度編輯器,而且已經做了遠程圖片本地化,於是檢查微信的圖片地址。
隨便打開一篇微信文章,發現其圖片地址如下:
http://mmbiz.qpic.cn/mmbiz_jpg/QeUoMcnKBk25dgQG6qxeicwFbSytxtia6EgAYiakC7JXJhss25yYQKwUC8w8SBibjfQjicAHOn4DoFHrEiaBQWncYFfg/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

可以看到這個地址和平常的圖片地址不一樣,沒有jpg、png等圖片后綴,用瀏覽器保存后,為webp格式。

0x01 懷疑本地化代碼

檢查本地化代碼,發現確實有通過后綴判斷的地方,但是默認為jpg后綴。

0x02 檢查前端

后端檢查沒有發現問題,於是又查看前端,打斷點,定位到復制圖片的js代碼段,發現如下:

原來編輯器會保存圖片的舊地址,並和后端發回的舊地址比較,如果不相等,不會替換為發回的新地址,這個機制還是比較嚴謹的。
看上圖,發現后端發回的舊地址,對“&”進行了轉義,於是舊地址比較不相等,所以沒有替換為本地化后的新地址。

0x03 繼續檢查后端

問題又回到后端了,找到發回的相關代碼,如下:

原來是htmlspecialchars的原因,但是這個又不能去掉,防止xss攻擊,那么轉義后,再把“&”替換回來,即:

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

上面的ENT_QUOTES 是為了讓htmlspecialchars把單引號也轉義,更加安全。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM