У меня есть следующая ссылка Ajax.action внутри представления, чтобы добавить ответ на вопрос: -
@Ajax.ActionLink("Add Answers",
"Create", "Answer",
new { questionid = question.QuestionID},
new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
HttpMethod = "Get",
UpdateTargetId = "removetable"
})
while вызовет следующий метод действия: -
public ActionResult Create(int questionid)
{
ViewBag.IsRight = new SelectList(repository.FindAllAnswerDescription().ToLis(), "IsRight", "description", 1);
ViewBag.questionid = questionid;
Answer answer = new Answer();
return PartialView("_answer",answer); }
поэтому мой вопрос: сможет ли хакер изменить параметр new { questionid = question.QuestionID},
, отправленный по ссылке ajax? и если да, как я могу избежать этого.
BR
Отредактировано: -
я делаю следующую проверку, используя вспомогательный метод (IsauthorizedBy) в методе пост-действия, чтобы проверить, авторизован ли пользователь на вопрос или нет: -
[HttpPost]
public ActionResult Create(int questionid, Answer a)
{
q = repository.findquestion(questionid);
if ((q == null) || (!q.IsauthorizedBy(User.Identity.Name))){
return ("error");}
if (ModelState.IsValid)
{
repository.AddAnswer(a);
repository.Save();
return PartialView("_details",a);
}
return(a);}
так будет и с хакером, который попытается изменить идентификатор вопроса и ответить на вопрос, на который он не уполномочен отвечать.
BR