保护后端免受 Laravel 中多个表单提交的影响



我正在尝试保护我的后端免受多个 post 请求的影响,以避免数据库上的重复数据和服务器过载。

我已经阻止了前端在第一次点击后禁用提交按钮,但它不会阻止一些"智能用户"从控制台提交我的表单或从页面禁用 javascript 并尝试一些东西。

所以我想知道Laravel是否有一些解决方案来解决这种情况。

PS:如果您愿意,我也已经在后端尝试了一些解决方案,我可以在这里发布。

根据要求:

所以我的替代方案之一是检查传入数据是否已经在数据库中并拒绝请求,如果是,它将防止重复数据,但不会防止服务器过载。

另一种选择是在会话中创建一个令牌,仅用于控制器的 Create(( 方法,将令牌发送到视图并将其放在隐藏字段中,从 post 请求中检索它并使用会话令牌检查 post 令牌。如果两个令牌相同,则取消设置它以避免其他请求尝试使用它,如果他们尝试,我会拒绝该请求。

如果您知道您的用户是谁(因为他们有 ID(,那么这很容易做到。 可能使用某种快速访问系统(如 Reddis(来签入用户在执行操作时处于编辑状态。

然而,这本身就造成了复杂性。如果您不知道您的用户是谁,也不起作用。

更安全的做法是确保您的请求可以处理潜在的问题。请考虑使用数据库事务来确保数据的完整性。

这实际上取决于您要避免什么,为什么要避免,以及您担心复制哪种数据。

如果它对你来说太重要了,无法保护多次提交,你可以在表单的隐藏输入中放置一个随机字符串,也可以把它放在你拥有的每个表单的特殊会话中,每次检查它,然后尝试在每次结束进程后更改你的会话

最新更新