2011-03-06 3 views
2

자습서 비디오에서 악의적 인 주사를 예방하기 위해 Html.Encode를 사용해야합니다. 그러나 인코딩 할 텍스트에 '문자 (예 : Dog)가 포함되어 있으면 브라우저의 출력은 Dog # 39입니다. 잠재적으로 위험한 모든 문자가 브라우저가 올바르게 렌더링 할 수있는 안전한 코드로 다시 매핑 될 것이라고 생각했을 것입니다. 그렇지 않은가요? 브라우저에 표시되지만 HTML 형식으로 표시하려면 어떻게해야합니까?안전한 방법으로 작은 따옴표를 렌더링하는 방법

답변

5

ASP.NET MVC 2 면도기 (MVC 3)에서 @ % : %>는 이미 값을 인코딩하고 있으므로 사용자가 값을 인코딩하므로 출력을 Html로 래핑 할 필요가 없습니다.

는 당신이`Response` 개체에 직접 쓰지는 않지만,

6

면도기의 @은 자동으로 인코딩하므로 이중 인코딩을했을 가능성이 큽니다. 예 : 마지막 하나는하지만 면도기에서 작동하는 경우

@Html.Encode("This is \"safe\"") 

같은 더 많거나 적은 같은

@{Response.Write(Html.Encode(Html.Encode("This is \"safe\"")));} 

몰라입니다.

+0

이 마지막 하나는, 면도기에서 일 것이다 이중 인코딩하지 있는지 확인 인코딩. 그렇게하면 예기치 않은 위치에서 일이 렌더링 될 수 있습니다. – marcind

+0

무엇? 코드가 순차적으로 실행되지 않습니까? – Alxandr

+0

코드는 순차적으로 실행되지만 면도기 출력은 페이지가 실행 완료되면 응답 스트림으로 만 플러시되는 텍스트 버퍼에 기록됩니다. Response 스트림에 직접 작성하는 경우 플러시가 발생하기 전에 출력을 주입 할 수 있으므로 예기치 않은 순서가 발생할 수 있습니다. – marcind

관련 문제