将数据库项的 ID 作为 url 参数传递是否安全?
Is it safe to pass ID of db items as url parameters?
在通过 Internet 发布我的作品之前,我想向您汇报一下我构建的内容是否足够安全,符合公认的做法。
我的客户端通过项目的 ID 查询数据库;然后它通过 url 将 ID 传递到第二页。
所以你会得到类似的东西:
mypage.com/pagename?q=#numericID
#numericID
是物品的ID。
我想知道如果 API 仅允许在同一域下使用,该站点是否足够安全以防止爬网,或者我是否应该遵循另一种更正统的做法:cookie?将应用程序重构为单页而不是两页 - 首先用于查询,第二用于结果? ...?
还请指教如何重新构建我的问题,因为关于服务器的安全性对我来说是全新的事物,我不知道我应该看什么主题。
如果您在两个站点之间传递数字 ID,则任何人都可以在第二个站点上尝试其他 ID 并查看结果。这对于任何可预测的 ID 都是一样的。
这是否是一个问题由您来确定,例如,如果最终用户尝试使用不同的 ID,则仅显示使用 ID 的不同产品的产品网站可能没问题。或者,如果 ID 用于定义当前登录的用户,那么您将遇到一个大问题。
后一种情况的简单解决方案是使用随机 ID。例如 UUID's 其格式类似于
1176399b-0dfd-4bd1-9266-8d72abb90bd3
为您要跟踪的每个项目分配不同的 UUID,并确保两个服务器都知道它们是什么。有人很难猜测或抓取备用 UUID。但是,随着时间的推移,恶意最终用户可能会了解它们。
除此之外,下一步是 3D 安全类型系统,其中您传递给第二台服务器的 UUID 仅一次,随后在安全通道上的服务器 2 和服务器 1 之间进行验证。
在通过 Internet 发布我的作品之前,我想向您汇报一下我构建的内容是否足够安全,符合公认的做法。
我的客户端通过项目的 ID 查询数据库;然后它通过 url 将 ID 传递到第二页。 所以你会得到类似的东西:
mypage.com/pagename?q=#numericID
#numericID
是物品的ID。
我想知道如果 API 仅允许在同一域下使用,该站点是否足够安全以防止爬网,或者我是否应该遵循另一种更正统的做法:cookie?将应用程序重构为单页而不是两页 - 首先用于查询,第二用于结果? ...?
还请指教如何重新构建我的问题,因为关于服务器的安全性对我来说是全新的事物,我不知道我应该看什么主题。
如果您在两个站点之间传递数字 ID,则任何人都可以在第二个站点上尝试其他 ID 并查看结果。这对于任何可预测的 ID 都是一样的。
这是否是一个问题由您来确定,例如,如果最终用户尝试使用不同的 ID,则仅显示使用 ID 的不同产品的产品网站可能没问题。或者,如果 ID 用于定义当前登录的用户,那么您将遇到一个大问题。
后一种情况的简单解决方案是使用随机 ID。例如 UUID's 其格式类似于
1176399b-0dfd-4bd1-9266-8d72abb90bd3
为您要跟踪的每个项目分配不同的 UUID,并确保两个服务器都知道它们是什么。有人很难猜测或抓取备用 UUID。但是,随着时间的推移,恶意最终用户可能会了解它们。
除此之外,下一步是 3D 安全类型系统,其中您传递给第二台服务器的 UUID 仅一次,随后在安全通道上的服务器 2 和服务器 1 之间进行验证。