發現知乎的一個Bug,並且我繞過了此Bug,沾沾自喜中...


發現問題

在知乎點擊修改頭像,上傳圖片時發現一片空白。憑着程序員的直覺,第一反應時看下控制台是否有報錯。果然發現如下:
alt

Refused to load the image 'data:image/jpeg;base64...' because it violates the following Content Security Policy directive: "default-src *". Note that 'img-src' was not explicitly set, so 'default-src' is used as a fallback.

第一次發現此類報錯,果斷google之。發現為抵御XSS攻擊,配置了響應參數CSP(Content Security Policy)引起的。

HTML頁面的響應參數如下:

Content-Security-Policy:default-src *; frame-src *.zhihu.com getpocket.com note.youdao.com; script-src *.zhihu.com *.google-analytics.com zhstatic.zhihu.com 'unsafe-eval'; style-src *.zhihu.com 'unsafe-inline'

錯誤提示的大概意思是由於沒有配置img-src,所以默認采用default-src的配置。
但是default-src配置為*,所以理論上應該是不會報錯的。查看了 https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives#default-src文檔如下
alt

誤打誤撞解決問題

所以我只能先認定只配置*是存在問題的,突然想着本地代理映射文件然后修改響應參數去驗證,於是保存HTMl文件,並用charles映射到本地。
神奇的事情突然發生了,竟然能上傳成功。
alt
alt
突然為程序員的自己感到自豪。

后記

雖然解決了上傳問題,但是還有好多疑問。

  1. 對default-src配置*是否有效還需要進一步確認。
  2. 通過代理本地文件就能繞后CSP,是否存在安全問題。
  3. 有沒有代理可以修改響應參數的。


免責聲明!

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



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