2012-04-23 3 views
1

1対多の関係(LabTest & LabTestDetail)を持つ2つのオブジェクトがあります。私は新しいLabTestDetailオブジェクトを追加したいとき、私はLabTest ID(親ID)を渡すAjax.actionlinkLabTestDetail Create action methodオブジェクトIDが私のasp.net MVC Webアプリケーション内の攻撃者のユーザによって変更されていないことを確認する方法

@Ajax.ActionLink("+ Add New Lab Test Detail", 
     "Create", "LabTestDetail", 
     new { labtestid = Model.LabTestID }, 

new AjaxOptions 
{ 

    InsertionMode = InsertionMode.Replace, 
    HttpMethod = "Get", 
    UpdateTargetId = "replace", 
    LoadingElementId = "progress" 
}) 

LabTestDetailCreate Action methodは、以下のように見える従うよう。 iはviewbaglabtestidの値を格納する場合: -

[Authorize(Roles = "Doctor")] 

public ActionResult Create(int labtestid) 
      { 
       ViewBag.labtestid = labtestid; 
       LabTestDetail ltr = new LabTestDetail(); 
       return PartialView("_Create", ltr); 
      } 

そしてcreate viewに私は次のようにhidden html fieldViewbagの値を格納する: - LabTestDetailPost Create action方法最後

<input type= "hidden" name = "labtestid" value = @ViewBag.labtestid /> 

以下のように見てください: -

[Authorize(Roles = "Doctor")]  
[HttpPost] 
      [ValidateAntiForgeryToken] 
      public ActionResult Create(LabTestDetail ltr, int labtestid) 
      { 
       try 
       { 
        if (ModelState.IsValid) 
        { 
         ltr.LabTestID = labtestid; 
         repository.AddLabTestDetail(ltr); 
         repository.Save(); 
         return PartialView("_datails", ltr); 
        } 
       } 
    //code goes here 

上記のw私のために細かなorks私はそれをテスト,,, が、私の大きな問題は、私はlabtestidの値は、次のアクション中に攻撃者によって変更されていないことを確認することができます方法です: -

  1. iがビューバッグとしてlabtestid値を渡すとき、私はcreate action method

  2. ajax.action linkからlabtestid値を渡す

  3. 、最終的に、私が割り当てるときlabtestidの値はhtml hidden fieldになります。

最高のお礼 ご協力いただきありがとうございます。 BR

答えて

0

あなたは認証を使用して認証されたユーザーのみが、現在認証されたユーザ(User.Identity.Name)はラボのテストの所有者である場合は、確認することができ、更新を行うことになっているアクション内で、これらの操作を行うことができれば。これが機能するには、それらのラボテストIDをユーザーと関連付ける必要があることを意味します。

+0

はい私は元のコードを更新する前に[Authorize(Roles = "Doctor")]を使用していますが、LabTestオブジェクトの所有者であるかどうかに関わらず、医師はLabTestDetailsを追加できます。しかし、私の懸念は、私のアプリケーションでプロの攻撃者がID値を変更できるようにすると、セキュリティ上の問題が発生する可能性があることです。私は攻撃者がIDを変更して新しい私のアプリケーションにはセキュリティ層がありますので、これを行う方法はありますか? –

関連する問題