javascript – 如何在不向用户显示unique_Id的情况下将记录从客户端更新到服务器

如何在不向客户端显示该记录的Unique_id的情况下,将记录从客户端更新到数据库.

我的问题是,如果我使用display:none属性将其显示给用户,用户可以检查并将该特定unique_id更改为某个随机数,以防万一可能与其他记录的unique_id匹配,最终更新其他记录(错误记录) ).

最佳答案
这是一个很好的问题,防止从客户端篡改Id的方法可能是:

基本上,我们的想法是创建一个令牌,它只是盐/密钥记录ID的哈希值.

算法步骤:

Record the Id from the (SELECT) query.

Create a token with salt + Id and save it for later use.

Include this token in your form data as a hidden field when data is
sent for update at the client side.

Now, when the user posts the data to the script that handles the form
submission, you can allow update if token that was sent equals the one
temporarily stored on the server.

if(tokenSavedOnServer != tokenCameFromClient)
{
  // Id has been tampered. Cancel update request.
}

通过在令牌中包含时间戳并检查时间戳是否不超过10分钟或任何时间,也可以使其更加健壮.

因此,任何进入另一个ID的请求都不会导致任何更新,因为针对的记录将不会具有相同的令牌字符串.

转载注明原文:javascript – 如何在不向用户显示unique_Id的情况下将记录从客户端更新到服务器 - 代码日志