2016-12-14 58 views
0

這是我剛纔的問題Get model id from route/url和解決方案是非常聰明的,但恐怕這如何檢查是否隱藏表單字段對應型號ID

{!! Form::hidden('event_id', $event->id) !!} 

用戶AntoineB說操縱的:「它如果你正確地保護你的應用程序不能被操縱,這是做到這一點的最好方法。「

我能做些什麼來保護我的應用程序免於操作此字段並檢查它是否與用戶實際點擊的事件ID相對應? 如何查看該字段?

回答

1

正如我評論你不能爲您網站上的所有事項標識都可以在瀏覽器中使用控制檯的所有用戶可見之前。

你可以做的是編碼/加密您的事項標識(Laravel提供加密)

{!! Form::hidden('event_id', encrypt($event->id)) !!} 

而且當您發送POST/GET在服務器端

$decrypted_event_id = (int)decrypt($request->input('event_id')); 

$event = Event::find($decrypted_event_id); 

你也可以做出具體的限制user for special event_ids 但是,Encypting會隱藏ID的實際值 加密並不能保護您,但會讓用戶更難理解您的事件具有什麼ID。

這是替代第三方庫哈希IDS click你可以,如果使用這個不喜歡的laravel加密較長的字符

+0

我正在使用中間件限制用戶,以便部分是安全的....但是那個有權訪問這個事件的用戶......他理論上可以通過瀏覽器改變隱藏的字段值......所以也許這個加密和解密可能是解決方案 – lewis4u

+0

如果你已經限制其他特定事件的用戶,以及害怕允許用戶對錶單進行更改,那麼我認爲yes加密值可能有助於其他用戶無法訪問它 – Froxz

0

嗯......什麼?

$request->event_id 
+0

我的意思是,用戶可以作出報價,以這樣的形式,從2的事項標識更改爲3例如並提供將被連接到錯誤的事件....我需要防止這種情況發生 – lewis4u

+0

@ lewis4u你不能作爲您的網站上的所有事件ID是可見的用戶,可以在瀏覽器中使用'console' – Froxz

+0

我在想以某種方式比較來自路線event_id與來自FORM的event_id,如果它們匹配,那麼它不被操縱...,如果他們不匹配的ID被操縱,但我不知道如何去做 – lewis4u

相關問題