2010-09-03 23 views
1

想知道我是否應該總是在我的所有控制器中的所有操作中使用respond_to/format.xxx塊。這是因爲我意識到,對於僅使用HTML響應格式(不響應塊)的應用程序,我可以發送其他類型的請求(比如XML)並獲得有效的響應。這被認爲是不安全的?感覺像我這樣,似乎解決方案是總是將respond_to/format.xxx塊添加到每個控制器上的每個操作,即使您僅使用HTML。這樣,任何非HTML請求將被拒絕(因爲他們應該)。RESTful Rails控制器操作中的安全性 - 我應該總是使用respond_to格式塊嗎?

那麼,有沒有什麼情況可以忽略掉任何給定動作的respond_to/format.xxx位?即使您只是在製作簡單,標準的僅支持HTML的應用程序?看來不同版本的Rails代碼生成器已經產生了不同的事情。只是想知道什麼被認爲是最佳實踐,什麼時候可以不使用它。

如果答案是「是的,你應該在任何行動中一直使用它以保證安全」,那麼它會不會被認爲是樣板文件?不應該以某種方式將它推下軌道,所以我們不必每次都一遍又一遍地寫出來。

回答

1

我不認爲這對您的應用程序的安全性有任何影響。假設入站HTTP請求格式正確並且客戶端已通過身份驗證以發出請求,您作爲服務器並不在乎客戶端收到的內容。實際上,客戶端可能會傳遞你完全忽略的各種頭文件和參數,並且客戶端需要處理意外的格式或錯誤。這是HTTP底層體系結構的組成部分。

無論如何,您可以將路由設置爲不接受.format參數,在這種情況下,對.xml的請求將導致404或其他類型的錯誤。

如果您只使用一種格式,請不要使用respond_to塊,它會使代碼變得雜亂無章。

+1

是的,這是有道理的。如果您只使用1格式,則可以將其指定爲默認格式,而不用擔心使用respond_to塊。那麼,這是否意味着如果您使用的格式不止一種,那麼您應該總是在每個控制器和每個操作中使用respond_to塊? – Buddy 2010-09-04 03:19:09

+0

我只會在需要它的地方使用它,但那只是我。 – 2010-09-04 04:23:46

相關問題