2010-10-27 91 views
1

我注意到在查看我的Rails應用程序的源代碼時,很多信息都是公開的,不應該是 - 特別是包含我的GA帳號的Google Analytics腳本以及我的表單的真實性標記。 有沒有關於在源代碼中隱藏這種代碼的指導原則?如何隱藏Rails應用程序中的源代碼片段?

回答

1

您的Google Analytics(分析)ID和真實性標記都需要可供瀏覽器執行。他們不需要隱藏。讓用戶看到它們沒有任何安全風險。

+0

是啊?好吧,感覺很愚蠢,但謝謝。 – kateray 2010-10-27 17:43:47

0

如果通過「查看源代碼」,你的意思是從服務器返回的HTML,那麼沒有。有些服務和產品會對您的頁面進行編碼並使其難以辨認,但這絕不是不可能的,因爲您的瀏覽器最終必須這樣做才能呈現頁面。大多數這些頁面加密器(有時稱爲)會使您的網站無法通過搜索引擎,因爲它們在索引頁面之前不會運行JavaScript。

看看其他網站,你會發現將這些東西放在一起是相當普遍的做法,因爲掩蓋或隱藏它的時間和精力是浪費時間。只要您不會無意中透露任何敏感信息,例如您的Amazon S3帳戶密鑰或用於加密會話的祕密(這不太可能偶然發生),那麼您就會無所事事。儘管如此,想一想它。如果瀏覽器無法訪問您的Google Analytics帳號,Google腳本如何知道要跟蹤哪個帳號?

0

我不認爲在那裏有真實性標記是危險的。爲了查看該真實性標記,用戶必須登錄。該用戶是否具有該會話的真實性標記並不重要。它應該在用戶註銷時過期。

但是,如果你願意,可以從源代碼中隱藏這些東西(儘管如果你有Firebug或類似的工具它們仍然可用)。

對於您的GA腳本,您可以將其視爲資源。你的application.js(或其他包含的js文件)可以對控制器進行AJAX調用(請求頭必須接受javascript),你的控制器可以發送一個包含腳本的js.erb文件。這個js現在只在Firebug中可見,如果你看看對控制器的請求的響應。你不會在源代碼中看到它。

對於真實性標記,您可以做類似的事情。我在其中一個應用中創建了一個JavaScript表單構建器。這個表單構建器是一個通過AJAX調用再次獲取並以js.erb發送的資源。 js.erb文件具有FormBuilder構造函數。在該構造函數,有一個builder.form()函數做到這一點:

return $('<%= form_for @object do |f| %> <% end %>'); 

,將返回其包含的真實性令牌和所有其他的東西在Rails形式的jQuery對象。

如果您希望您的JS表單構建器做的不僅僅是吐出表單(例如,根據對象的屬性名稱(包含輸入,複選框和相應屬性的集合)爲構建器對象動態創建屬性)對我來說,我可以告訴你我是怎麼做到的:)