javascript注入asp mvc

时间:2009-05-20 18:19:44

标签: asp.net-mvc entity-framework

我创建了控制器:

    [Authorize]
    [AcceptVerbs(HttpVerbs.Delete)]
    public ActionResult Delete(int id)
    {
        try
        {
            db.DeleteObject(db.AEROLINEA.FirstOrDefault(x => x.AEROLINEAID == id));
            db.SaveChanges();
        }
        catch { /* TODO:Display message*/ }

        return View();
    }

如果我在firebug中执行,那么任何记录的下一个javascript都可以删除航空公司,即使他没有删除权限

    var action = "/Airline/Delete/" + recordId;

    var request = new Sys.Net.WebRequest();
    request.set_httpVerb("DELETE");
    request.set_url(action);
    request.add_completed(deleteCompleted);
    request.invoke();

HOw可以避免这个问题???

3 个答案:

答案 0 :(得分:2)

您可以过滤角色:

示例:

[Authorize(Roles="Admin")]
    [AcceptVerbs(HttpVerbs.Delete)]
    public ActionResult Delete(int id)
    {
        try
        {
            db.DeleteObject(db.AEROLINEA.FirstOrDefault(x => x.AEROLINEAID == id));
            db.SaveChanges();
        }
        catch { /* TODO:Display message*/ }

        return View();
    }

答案 1 :(得分:0)

或者在View ..中使用带有多汁盐的AntiforgeryToken。

答案 2 :(得分:0)

[授权]不带参数允许您指示用户必须登录。您还可以指定用户/角色,有权访问您的操作