用户或黑客是否可以使用应用程序外部的某些工具调用POST操作方法

时间:2012-01-26 00:46:33

标签: asp.net asp.net-mvc-3 entity-framework

我正在阅读Microsoft网站上有关如何显示或隐藏对象的“注册”链接的示例,具体取决于当前用户是否已注册。 只有当前用户尚未注册时,他们才会将以下代码添加到视图中以显示“注册”链接: -

<div id=”rsvpmsg”>
<% if (Request.IsAuthenticated) { %>
<% if (Model.IsUserRegistered(Context.User.Identity.Name)) { %>
<p>You are registered for this event!</p>
<% } else { %>
<%: Ajax.ActionLink( “RSVP for this event”,
“Register”, “RSVP”,
new { id=Model.DinnerID },
new AjaxOptions { UpdateTargetId=”rsvpmsg” }) %>

然后在注册操作方法上,他们也执行相同的检查以检查用户是否已经注册,如下: -

    [Authorize, HttpPost]
    public ActionResult Register(int id) {
    Dinner dinner = dinnerRepository.GetDinner(id);
    if (!dinner.IsUserRegistered(User.Identity.Name)) {
    RSVP rsvp = new 

RSVP();
// .....

所以我的问题是为什么他们再次对Post动作方法执行相同的检查,用户有机会调用POST寄存器动作方法,而不是点击不会是的Register注册链接如果用户已经注册,则显示? ...所以为什么不考虑

 if (!dinner.IsUserRegistered(User.Identity.Name)) 

检查动作方法是否必要? BR

2 个答案:

答案 0 :(得分:5)

是的,这显然是可能的,而且很容易。

答案 1 :(得分:3)

是的,我用它进行测试。例如,Fiddler(http://fiddler2.com/fiddler2/)将允许您创建/编辑请求,然后发送它们以及查看它们