0

Guys i'have a question.

I'm currently buiding a wizard that has 5 step's until being completed.

The user starts by the first step where he generates the entry id. From there on i start passing the id over the url like this:

host.com/{controller}/{view}/{id}

This is how my url looks like after the step1, ------- currently at view step2 passing the id=120

host.com/{controller}/step2/120

This isn't safe because as you know, anyone can change the id and affect other users's entries. Ofc, it can be quickly solved by reading if the authenticated user is proprietary of the entry that he must be trying to access in each view.

Now, my question is... is there a better way to do this? Any tips for future work? Is what i'm doing enougth? (begginer doubt praying for a expert awnser) Cheers

4

2 回答 2

1

如果您真的担心用户更改 URL 中的 ID,那么您必须花费额外的时间添加类似“isOwnedBy”的功能。

作为一项额外的安全措施,您可以通过表单中的隐藏变量传递它,因此至少也不容易更改。

编辑:我也喜欢@LeffeBrune 关于加密这个想法的建议。但是,我仍然建议对函数执行验证以确保用户拥有该对象。这只是一个好习惯。

于 2012-09-13T16:19:24.343 回答
1

...可以通过读取经过身份验证的用户是否拥有他必须在每个视图中访问的条目的所有权来快速解决。

是的,这是真的。你应该从那里开始。

以下是您可以做的其他一些事情:

  1. 您可以将您的条目 id 设置为 Guid,以便潜在的黑客永远不会尝试猜测条目 id。
  2. 因为对敏感数据使用 GET 是一个坏主意,所以您可以像 endyourif 建议的那样,传递带有隐藏字段的条目 ID。
于 2012-09-13T17:55:31.613 回答