簡體   English   中英

在哪里可以配置內容安全策略?

[英]Where can Content-Security-Policy be configured?

對於客戶,我正在其網站上實施Facebook Pixel,以允許他們收集營銷統計信息。 Facebook Pixel是使用<head>標記中的以下Javascript實現的:

<script>
  !function(f,b,e,v,n,t,s)
    {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
    n.callMethod.apply(n,arguments):n.queue.push(arguments)};
    if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
    n.queue=[];t=b.createElement(e);t.async=!0;
    t.src=v;s=b.getElementsByTagName(e)[0];
    s.parentNode.insertBefore(t,s)}(window,
    document,'script',
    'https://connect.facebook.net/en_US/fbevents.js');
    fbq('init', '*****************');
    fbq('track', 'PageView');
</script>
<noscript>
  <img height="1" width="1" src="https://www.facebook.com/tr?id=***************&ev=PageView&noscript=1" />
</noscript>

如您所見,該腳本正在connect.facebook.net域上調用Javascript文件。 將代碼上傳到生產服務器后,由於違反了Content-Security-Policy指令,我在Chrome控制台中收到以下錯誤:

Refused to load the script 'https://connect.facebook.net/en_US/fbevents.js' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' 'unsafe-eval' platform.twitter.com s3.amazonaws.com cdn.ckeditor.com cdn.syndication.twimg.com www.google-analytics.com ajax.googleapis.com player.vimeo.com".

我已經瀏覽了網站的源代碼(它是用PHP內置的),並且Content-Security-Policy指令未在此處配置。 .htaccess文件中也沒有。 盡管我不太確定,是否可以.htaccess文件中完成此操作。

編輯:(添加響應頭的圖像) 響應頭

由於在錯誤信息,以及在上面的截圖中看到, 一個Content-Security-Policy某處定義的指令,我需要找到它,這樣我就可以有白名單Facebook的域。 我在想,這可能是在服務器級別的httpd.conf完成的,該文件我無法訪問,因為該網站由外部托管提供商托管。

所以我的問題是:如果不在PHP代碼,html <meta http-equiv>屬性或httpd.conf文件中,則可以在哪里配置Content-Security-Policy指令? 可以在其他地方完成嗎?

據我所知,以下是可以設置內容安全策略的唯一位置:

  1. 元標記(在示例中並非如此,因為它是標題)
  2. Apache配置,ether apache2.conf / httpd.conf或串聯到主文件中的vhost / config文件之一。 如果可以,請檢查可用站點
  3. .htaccess,如果您無法直接訪問apache配置,我想就是這種情況。
  4. PHP的header()函數(如果標題是手動創建的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM