2015-10-31 44 views
12

我上運行Tomcat 6.我的應用程序基於Java爲基礎的Web應用程序在本地主機和端口運行9001內容安全政策:該頁面的設置阻止了自我加載資源?

爲了讓我的應用程序更安全並減少XSS攻擊的風險,我所附加的標題Content-Security-Policy與值default-src *'unsafe-inline''unsafe-eval'; script-src'self'。有了這個,我想讓Web應用程序加載來自同一個域的JavaScript文件。

對於其他資源,它繼續以與沒有此標題相同的方式加載。

但我得到下面的錯誤。

Content Security Policy: The page's settings blocked the loading of a resource at self ("script-src http://localhost:9001"). 
+0

我不確定這是否會導致錯誤,但您的'default-src'看起來已滿:「多個源列表值可以是空格分隔的,除了'*'和'沒有'應該是唯一的價值。「 (重點,我的)http://content-security-policy.com/#source_list – kuporific

+0

@ kuporific對不起,我沒有得到這個。那麼我的情況應該是什麼樣的價值呢? – emilly

回答

4

內容安全策略標頭是一個可信來源白名單。

default-src列表是所有其他*-src列表使用的列表。如果不存在,則默認爲default-src: *,這意味着「所有內容均允許來自任何地方」,但不提供針對XSS的任何保護。

因此,你應該

  • default-src none入手,讓所有的內容是不允許的,或者
  • default-src 'self',使您的域名只有內容是允許的。

之後,其他*-src可以根據需要更換。例如,除了圖像一切以下列信託自我,圖像只能從example.com允許(而不是從「自我」):

default-src 'self'; img-src example.com; 

在你的問題,你指定default-src * 'unsafe-inline' 'unsafe-eval';,這可能是導致該問題因爲*已暗示'unsafe-inline''unsafe-eval'。這就像說「允許所有內容並允許內聯並允許評估」。

還要注意,CSP通過在IE> = 8

源頭的X-Content-Security-Header支持:

+0

我只是嘗試script-src'self',但它沒有任何區別,因爲我仍然得到相同的錯誤 – emilly

+0

有沒有一種方法可以告訴加載資源而不管協議。我的意思是我想要從https://www.google-analytics.com http:// www.google- analytics.com'載入javascript資源。我怎樣才能做到這一點 ? – emilly

-3

嘗試:

default-src * 'unsafe-inline' 'unsafe-eval';script-src 'self' 'unsafe-inline' 'unsafe-eval' 
+0

@haywire它看起來像是試圖回答這個問題。這有點薄,是的,但如果你認爲,這個答案是錯誤的或不完整的,你可以減少它。 –

+8

請考慮編輯您的帖子以添加更多關於您的代碼的解釋以及爲什麼它可以解決問題。一個主要包含代碼的答案(即使它正在工作)通常不會幫助OP瞭解他們的問題。如果這只是猜測,也建議您不要發佈答案。一個好的答案會有一個合理的理由解釋爲什麼它可以解決OP的問題。 – Drenmi

相關問題