2016-12-14 30 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

相关问题