2012-07-31 129 views
3

在防火牆後面保護靜態資產(javascript和css)的過程是什麼? 我有一個管理部分大量使用javascript。我真的不想向公衆公開這些代碼。Symfony 2靜態資產授權(防火牆後面的.js)

我目前/web/admin/js/xyz.js

使用assetic到文件編譯我所有的JavaScript是有一個簡單的方法來做到這一點,我俯瞰?

+0

據我所知,沒有辦法將靜態文件放在安全下。期待這個問題的答案! – 2012-08-01 05:49:34

+0

你使用什麼網絡服務器?您可以使用它來保護IP或Cookie的請求。 – 2012-08-05 00:42:16

+0

Apache。我不想走這條路(這是不實際的),我想使用內置的symfony防火牆。 – calumbrodie 2012-08-05 21:52:24

回答

4

您可以使用控制器來提供靜態文件並保護該控制器。例如:

/** 
* Serves static javascript file. 
* We have configured /secure to be secured by some firewall 
* 
* @Route("/secure/xyz.js", name="static_xyz") 
*/ 
public function staticXyzAction() 
{ 

    $headers = array(
     'Content-Type' => 'text/javascript', 
    ); 

    return new Response(file_get_contents($this->get('kernel') 
     ->getRootDir().'../web/admin/js/xyz.js'), 200, $headers); 
} 

這只是您提供的數據的一個示例。顯然,在你的最終代碼中,被服務的文件應該位於某個不能被Web服務器直接訪問的目錄中。

這種方法明顯的缺點是性能。 PHP服務靜態文件要比Web服務器慢得多,但取決於您的負載,這可能不是問題。

+0

您可以讓字體更大膽,在哪裏說'正在服務的文件應該位於某些不能被Web服務器直接訪問的目錄? – 2012-08-06 05:48:02

+0

後端加載很輕,所以這將工作正常,我認爲。我想如果我想使用防火牆,那麼我沒有選擇,只能加載完整的框架。謝謝 – calumbrodie 2012-08-06 09:06:12

+0

@thecatontheflat我不確定在資產的範圍內(這符合web根目錄中的目錄)是多麼實用。我不能只是強制/ adminassets位置內的任何靜態資產的任何請求通過前端控制器,並確保任何安全資產總是編譯到該文件夾​​? – calumbrodie 2012-08-09 00:01:29

1

你爲什麼要「隱藏」這些admin js文件? js不應該執行嚴格的授權或檢查權限,而只是與您的Sf2 Apis/Controllers進行交流,並且如果閱讀則不應該是關鍵的。這是一個概念問題。

如果您害怕lambda用戶/黑客看到這些js文件,您可以在Assetic中設置一個非常複雜的隨機js輸出。 Symfony .htaccess僅允許用戶訪問靜態文件,只要他們知道確切的URL,他們不能列出存儲建立資產的存儲庫,防火牆可以捕獲這些文件。

最後的安全性測試,使用yui-minifier和Assetic來縮小和阻塞你建立的js文件。

+0

它們不包含任何重要的授權或檢查權利。但這是我的專有應用程序代碼 - 因此我不想將它留在可以下載的地方。你的方法可以工作(實際上),但它有點像默默無聞的安全性(儘管它本身不是安全風險,但是是商業風險)。混淆代碼可以被反向設計。感謝評論 - 儘管如此,你已經爲我的問題提供了一個實際的解決方案(如果這是一個問題)。 – calumbrodie 2012-08-11 12:30:09

+0

我也同意這有點矯枉過正,可能無用。 1.誰想要竊取JavaScript代碼?特別模糊。如果它沒有被設計成一個合適的庫,爲了一個非常普遍的目的,我會發現自己編寫它更容易,如果它是你應該開源的:-) 2.那些想要竊取它的人需要URL無論如何,如果他們無法訪問管理部分(Assetic使文件名很難猜到),他們不會這樣做。他們仍然可以得到它,如果管理員發送給他們。客戶端語言被提供給客戶端。 – Julien 2013-01-09 10:45:49

+0

這些迴應不應針對文件是否應該受到保護,無論出於何種原因,開發人員可能希望隱藏來自外部用戶的文件。答案應該是幫助找到解決這個問題的辦法。根據所問的問題,我發現這些迴應最有幫助。 – Donovan 2013-07-20 00:26:09