1

我有一个包含活动的网站,每个活动都有多个调查。

如果我要编辑广告系列,我的 URL 名为

campaign/edit/1

如果我想在活动中编辑调查,我有一个名为

campaign/edit/1/survey/edit/3

我的页面将获取 ID 为 1 的活动和 ID 为 3 的调查的数据。

虽然这可行,但我想知道是否确实存在某种更适合此的约定,或者这样的 URL 是否可以?

4

2 回答 2

2

虽然对于风险较低的小型网站这样做是完全可以接受的,但还有其他更安全的方法可以做到这一点。例如,请注意,如果您访问网络上的 Instagram 帖子,URL 是“ https://www.instagram.com/p/BeB6HbqA8TEYRi7-I0X3neNZ2tw0irKoVdUCbg0 ”,其中 /p/ 后面的字符串是图像的 id . 这是一个哈希而不是一个数字。他们本可以将 url 设置为图像的编号 ID,但这可能会导致问题,您可以根据相对于其他图像的发布时间等来预测图像的 ID,从而暴露您不知道的后端的一部分通常要暴露。

在您的情况下,您将使用户能够将 URL 中的 ID 从 1 和 3 更改为其他数字,并且可能它们是数据库中的有效 ID,因此他们会提出一个他们可能不应该能够的表单使用权。

因此,Web 框架可以让您指定您希望数据库对象生成 UUID(随机散列)并将其用作键(例如Django 的 UUIDField)。然后,您可以在 URL 中使用 UUID,从而阻止任何人生成可能的 URL。

于 2018-01-17T05:32:37.530 回答
0

你在做什么很好。但是您也可以通过将 url 引导到不同的页面来使其更容易。快乐编码!

于 2018-01-17T05:23:54.477 回答