저는 방금 @Encoder.JavaScriptEncode
을 here으로 사용하여 AntiXSS (4.3.0)를 사용하기 시작했습니다.AntiXSS JavaScriptEncode가 HTML을 인코딩합니까?
Nuget에서 AntiXSS를 설치 한 다음 내 Web.config에 encoderType="Microsoft.Security.Application.AntiXssEncoder, AntiXssLibrary"
을 <httpRuntime
으로 추가했습니다. 내보기에서
, 나는 (<script>
태그 이내) 다음 줄이 :
var userId = @Encoder.JavaScriptEncode(User.Identity.GetUserId());
I 출력
var userId = 'user-id';
에 기대하는 대신 출력 :
var userId = 'user-id';
Razor가 HTML을 위생적으로 처리하려고 시도하고 있기 때문에 이것이 일어나고 있다고 가정합니다. 따옴표는 '
입니다.
그런 다음 해결책은 Html.Raw()
으로 감싸는 것이지만 post I was following에서 그는 자바 스크립트 내에서 작은 따옴표로 전체를 감싸는 대신 절대로하지 않습니다.
제 질문은 @Html.Raw(Encoder.JavaScriptEncode(data))
으로 전화해야합니까, 아니면 설치에 문제가 있습니까?
감사합니다.
감사합니다. 단지 이상하게 보입니다. 또한 Identities 2.0을 사용하고 있습니다.이 ID는 기본적으로 문자열 ID로 지정됩니다 (따옴표로 묶으려는 이유입니다) – MatthewSot