1対多の関係(LabTest & LabTestDetail
)を持つ2つのオブジェクトがあります。私は新しいLabTestDetail
オブジェクトを追加したいとき、私はLabTest ID
(親ID)を渡すAjax.actionlink
でLabTestDetail 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"
})
LabTestDetail
Create Action method
は、以下のように見える従うよう。 iはviewbag
にlabtestid
の値を格納する場合: -
[Authorize(Roles = "Doctor")]
public ActionResult Create(int labtestid)
{
ViewBag.labtestid = labtestid;
LabTestDetail ltr = new LabTestDetail();
return PartialView("_Create", ltr);
}
そしてcreate view
に私は次のようにhidden html field
にViewbag
の値を格納する: - LabTestDetail
Post 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
の値は、次のアクション中に攻撃者によって変更されていないことを確認することができます方法です: -
iがビューバッグとして
labtestid
値を渡すとき、私はcreate action method
へ
ajax.action link
からlabtestid
値を渡す、最終的に、私が割り当てるとき
labtestid
の値はhtml hidden field
になります。
最高のお礼 ご協力いただきありがとうございます。 BR
はい私は元のコードを更新する前に[Authorize(Roles = "Doctor")]を使用していますが、LabTestオブジェクトの所有者であるかどうかに関わらず、医師はLabTestDetailsを追加できます。しかし、私の懸念は、私のアプリケーションでプロの攻撃者がID値を変更できるようにすると、セキュリティ上の問題が発生する可能性があることです。私は攻撃者がIDを変更して新しい私のアプリケーションにはセキュリティ層がありますので、これを行う方法はありますか? –