2011-04-11 75 views
0

任何人都可以在自己的項目中使用它?如果是,如何?我知道這有助於減少攻擊。Params.sort.key它是如何工作的?

如果我有我的控制器中執行以下:?什麼我應該寫在這裏]

mail_id = params[:mail_id].to_i 
user_id = params[:user_id].to_i 
token = params[:token] 

我應該在哪裏寫params.sort.key

+0

你在哪裏看到'Params.sort.key'你能給我們一個例子嗎? – 2011-04-11 06:53:05

+0

當然:例如:if params [:id]和params [:user_id]和params.key.sort == ['action','controller','id','user_id'] ..我在一個項目 – 2011-04-11 07:12:30

+0

您能更具體地瞭解您想實現的目標嗎?另外,當你說params.sort.key時,你的問題是錯誤的。正如你在上面的評論中提到的那樣,它可以是params.keys.sort,因爲params是一個哈希。 params.keys將是散列中所有鍵的數組。 – 2011-04-11 07:21:28

回答

2

我相信這個概念應該工作如下:

你想到 'PARAMS' 散列在一定程度上是這樣的:

params = { :mail_id => 1, :user_id => 2, :token => 'foo' } 

這意味着params.keys將返回[:mail_id,:USER_ID,:令牌]

params.keys.sort將返回按字母順序排序的鍵: [:mail_id,:令牌,:USER_ID]

因此,要驗證是否PARAMS都抱着你指望它有確切的按鍵,你可以這樣做:

if params.keys.sort == [:mail_id, :token, :user_id] 
     render :text => 'Serving your request' 
    else 
     render :text => 'Server understood the request, but refuses to serve it, since some of the requested data is missing' 
    end 

你可以在你的控制器使用

logger.debug(params.keys)驗證「PARAMS」散列的確切內容