验证从GET到POST的对象ID

时间:2015-06-14 05:30:17

标签: c# asp.net-mvc

我有一个GET方法,允许用户访问他们之前在我的网站上发表的评论。然后我有一个post方法,让他们更新该评论。

我的正常解决方案是发送整个Comment模型,让他们更新它,然后在POST回来时在数据库上更新它。但这会涉及将CommentID发送到HiddenFor,这很容易被操纵。

如何验证我的CommentID方法中发送的GET与我POST中的<?php function user_exists($username){ $username= sanetize($username); $query= mysqli_query($connect, "SELECT COUNT('user_id') FROM users WHERE username= '$username'"); if(mysqli_num_rows($query)>0){ return TRUE; } } 相同,因此他们无法更改任何评论希望?

2 个答案:

答案 0 :(得分:4)

  

如何验证在我的GET方法中发送的CommentID是否相同   我回来了吗?

基本上,您必须在POST -

中验证以下内容
  1. 用户是登录用户。这样只有经过身份验证的用户才会发表评论。
  2. 您在CommentID中获得的
  3. POST应该是有效的CommentID,并且应该存在于数据库中。
  4. 与登录用户相关联的
  5. UserId应与UserID相关联的Comment相同。因此,基本上您的Comment也应包含UserId列,您可以在更新时查看该列。
  6. 确保在GET -

    中发送的评论更新
    1. CommentID中按住Session,在POST操作中将CommentIDSession中的值进行比较。

答案 1 :(得分:2)

请注意,您所描述的这种行为是正确的。通过POST和GET,API必须允许使用CommentID进行数据操作。

您缺少以下内容:为此,必须对用户进行身份验证并具有相应的角色。只要允许用户进行这些更改就没有问题。请注意,如果用户未经过身份验证或授权,则在执行身份验证和授权时,他或她将无法执行任何此操作。如果您愿意,您甚至可以允许具有特定角色的用户执行GET而不是针对此特定情况的POST。