2013-08-18 2 views
0

XSS 첨부를 시뮬레이트하려는 MVC 4 응용 프로그램이 있습니다. 버튼과 텍스트 상자가있어 텍스트 상자에 입력 된 값을 출력합니다. 텍스트 상자에 <script>alert('xss')</script>을 입력하면 위험한 값이 클라이언트에서 감지되었다는 예외가 자동으로 표시됩니다. 어떻게 학습 목적으로 최소한 이것을 방지 할 수 있습니까? 이제 Furqan의 조언을 따른 후에 예외가 발생하지 않습니다. 그러나 경고 메시지 상자가 나타나기를 기대하지만 스크립트 태그가 문자열로 표시됩니다.VS2012 MVC4 응용 프로그램에서 XSS 공격 시뮬레이션

누군가가 왜 이런 식으로 설명 할 수 있습니까?

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 
<h2>@ViewBag.Message</h2> 
<form method="post" action="/home/index"> 
<input type ="text" id="text" name="search" value="@ViewBag.Message"/> 
<input type="submit" /> 
    </form> 

이것은 내 컨트롤러 동작입니다.

public ActionResult Index() 
     { 
      return View(); 
     } 
     [HttpPost] 
     public ActionResult Index(string search) 
     { 
      ViewBag.Message = search; 
      return View(); 
     } 
+2

HTTPPost Request에 대한 색인 메소드에'[AllowHtml]'속성을 사용하십시오. –

+0

[AllowHtml]은 속성 – ckv

+2

에 대해서만 유효합니다. 사실을 잊어 버렸습니다. 컨트롤러 동작에'[ValidateInput (false)]'를 사용하십시오. –

답변

3

당신은보기에서 모두 동작에 [ValidateInput(false)]@Html.Raw를 사용해야합니다 :

컨트롤러 :

[HttpPost] 
[ValidateInput(false)] 
public ActionResult Index(string search) 
{ 
    ViewBag.Message = search; 
    return View(); 
} 

보기 :

<h2>@Html.Raw(ViewBag.Message)</h2>