이스케이프 처리되지 않은 HTML 문자열 쓰기 / 출력
안전하고 위생적인 HTML이 DB 테이블에 저장되어 있습니다.
이 HTML 컨텐츠를 Razor보기로 작성하려면 어떻게해야합니까?
항상 같은 <
앰퍼샌드 와 같은 문자를 이스케이프 합니다 &
.
콘텐츠가 mystring
... 라는 문자열 안에 있다고 가정합니다 .
당신이 사용할 수있는:
@Html.Raw(mystring)
또는 문자열을 모델로 HtmlString
구현 IHtmlString
하거나 직접 인라인으로 사용하고 regular을 사용 하는 다른 유형으로 변환 할 수 있습니다 @
.
@{ var myHtmlString = new HtmlString(mystring);}
@myHtmlString
ASP.NET MVC 3에서는 다음과 같이해야합니다.
// Say you have a bit of HTML like this in your controller:
ViewBag.Stuff = "<li>Menu</li>"
// Then you can do this in your view:
@MvcHtmlString.Create(ViewBag.Stuff)
당신이 사용할 수있는
@{ WriteLiteral("html string"); }
때로는 원시 HTML을 사용하는 것이 까다로울 수 있습니다. 주로 XSS 취약점 때문입니다. 이것이 걱정이지만 여전히 원시 HTML을 사용하려면 무서운 부분을 인코딩 할 수 있습니다.
@Html.Raw("(<b>" + Html.Encode("<script>console.log('insert')</script>" + "Hello") + "</b>)")
결과
(<b><script>console.log('insert')</script>Hello</b>)
다음과 같이 컨트롤러의 문자열을 viewdata에 넣을 수 있습니다.
ViewData["string"] = DBstring;
그런 다음 뷰 데이터를 다음과 같이 호출하십시오.
@Html.Raw(ViewData["string"].ToString())
별도로 사용에서 @MvcHtmlString.Create(ViewBag.Stuff)
Dommer에 의해 제안, 난 당신이 또한 사용하는 것이 좋습니다 AntiXSS의 제안 라이브러리를 필 http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp -net.aspx
거의 모든 가능한 XSS 공격 문자열을 인코딩합니다.
참고 URL : https://stackoverflow.com/questions/4281424/writing-outputting-html-strings-unescaped
'Programing' 카테고리의 다른 글
파이썬 여러 줄 문자열에 대한 적절한 들여 쓰기 (0) | 2020.02.19 |
---|---|
속도 대신 크기를 최적화하면 GCC가 15-20 % 더 빠른 코드를 생성하는 이유는 무엇입니까? (0) | 2020.02.19 |
Visual Studio Code에서 파일을 어떻게 검색합니까? (0) | 2020.02.19 |
숭고한 텍스트 2-공백 문자보기 (0) | 2020.02.19 |
C ++에서 구조체와 클래스의 차이점은 무엇입니까? (0) | 2020.02.19 |