我正在尝试保护我的后端免遭多个发布请求的影响,以避免数据库上的重复数据和服务器过载。
我已经阻止了前端在第一次单击后禁用“提交”按钮,但是这不会阻止某些“聪明的用户”从控制台提交我的表单或从页面禁用javascript并尝试某些操作。
所以我想知道Laravel是否可以解决这种情况。
PS:如果您希望我可以在这里发布,我也已经在后端尝试了一些解决方案。
根据要求:
因此,我的替代方法之一是检查输入的数据是否已经在数据库中,并拒绝该请求,否则将防止重复的数据,但不会导致服务器超载。
另一种替代方法是在会话中创建一个令牌,以仅用于控制器上的Create()方法,将该令牌发送到视图并将其放置在隐藏字段中,从发布请求中检索它,并使用以下命令检查发布令牌会话令牌。如果两个令牌相同,则将其取消设置以避免其他请求尝试使用它,如果他们尝试我拒绝该请求。
答案 0 :(得分:0)
如果您知道您的用户是谁(因为他们有ID),那么这样做就容易些。可能使用某种Reddis之类的快速访问系统来检查用户在执行操作时处于编辑状态。
但是会产生自身的复杂性。如果您不知道您的用户是谁,也将不起作用。
更安全的做法是确保您的请求可以处理潜在的问题。考虑使用数据库事务来确保数据的完整性。
这实际上取决于您要避免的内容,原因以及担心重复的数据类型。
答案 1 :(得分:0)
如果对于保护多个提交来说太重要了,您可以在表单的隐藏输入中放置一个随机字符串,还可以针对您拥有的每种表单在一个特殊的会话中放置它,并在每次更改后进行检查,然后尝试进行更改每次结束过程后的会话