2011-07-03 6 views
0

그래서 일반적으로 내가 좋아하는 링크가 GET, POST과 같이 URL을 만들려면. 일부 영리한 사용자는 링크를 스스로 재발 명하고 일부 데이터에 액세스 할 수 있으므로 바람직하지 않습니다. 내가 서버 측 설정 보안을 할 수 알지만, 내가 링크를 만들기 위해 좋아하는 것처럼 보이는 것 : ASP.NET MVC에서ASP .NET MVC는하지

http://domain.com/action 

그리고 '일부'와 'foo는'POST 요청을 같이 보내

답변

1

작업 포스트와 구별을하지 말고 행동에 대한 매개 변수까지 고려하십시오. 그러나 속성을 [HttpPost]으로 표시하여 시작할 수 있습니다. 이렇게하면 요청 옵션이 게시 전용으로 제한됩니다.

이제 두 번째 "이슈"에서 get 대신 post를 사용하도록 모든 링크를 변경해야합니다. 아약스를 사용하면 jQuery에서 $.post을 확인할 수 있습니다.

이것은 매개 변수의 보안 문제를 해결하지는 않지만 일반적으로 쿼리 문자열에 표시하거나 post으로 보내는 경우 문제가되지 않습니다. 누군가가 당신의 포스트 데이터에 무엇인가를 주입하고 싶다면 그것은 로켓 과학이 아닙니다.

+0

참. 하지만 적어도 링크가 더 멋지게 보입니다. 쿼리 문자열이없는 다른 사이트에서 비슷한 솔루션을 보았 기 때문에 궁금해했습니다. 데이터를 어떻게 든 서버에 전달해야합니다. –

+0

그래도 단점은 친구와 링크를 공유 할 수 없다는 것입니다. –

+0

게시물 편집과 같은 링크를 누구나 공유 할 수 있을지는 의문입니다. –

1

작동하려면 양식으로 포장해야합니다. 입력은 숨겨져 있습니다. 서버 측에서는 POST 요청에 응답하는 동작 만 제한해야합니다. 그러나 이것은 충분히 관심 있고 지식이 풍부한 사용자가 POST를 GET으로 쉽게 만들 수 있기 때문에 실제로 문제를 해결하지는 못합니다.

0

보기에 양식을 추가하고 게시물 이후에 모델을 가져올 작업에 [HttpPost] 특성을 적용 할 수 있습니다. 게시물을 였는지를 여기

@using (Html.BeginForm("SomeAction", "SomeController", FormMethod.Post, new { @id = "someFormId" })) 
{ 
    @Html.HiddenFor(model => model.some) 
    @Html.HiddenFor(model => model.foo) 
} 

그리고 행동과 컨트롤러입니다 : 면도칼보기로 양식을 추가

(또한 당신은 버튼이나 작성 할 수있는 링크가 필요합니다)

public class SomeController : Controller 
{ 
    [HttpPost] 
    public ActionResult SomeAction(SomeModel model) 
    { 
     //process 'some' and 'foo' here 
     return View(model); 
    } 
} 

보안을 강화하기 위해 "some"및 "foo"값을 쉽게 암호화/해독 할 수 있습니다.