바보 같은 질문이 있으면 용서해주세요. 나는 명시 적으로 대답을 찾을 수 없었습니다.XSS로부터 보호하기 위해 Bind() 또는 Eval()이 자동으로 HtmlEncode를 수행합니까?
나는 거의 내 영문 페이지에 바인딩() 또는 평가()를 사용하지 않고, 대신에 다음 구문을 사용합니다
<asp:Label id="lblFirstName" runat="server" Text='<%# Microsoft.Security.Application.AntiXss.HtmlEncode(DataBinder.Eval(Container.DataItem, "FirstName").ToString()) %>
내가 이것을 일을 시작했다 (이것은 Repeater 컨트롤에 ItemTemplate을에 가정) 오래 전, 간단히 질문하지 않았지만, 지금은 과도 할 수도 있습니다. 그리고 지금은 사방이 구문을 사용하는 CMS 사용하고 있습니다 :
<asp:Label id="lblFirstName" runat="server" Text='<%# Bind("FirstName") %>
그래서 나는 기본적으로 궁금하네요을 내가 바인딩() 또는 평가가() 런타임 자동으로 출력 대해 HTMLEncode 않습니다를 사용하는 경우? 나는 불필요한 코딩을 계속하고 있 었는가?
Goocd가 보이지만 DataBinding 컨텍스트에서 볼 수있는 것처럼 ''(Response.Write 해당)에 해당하는 것 같지 않습니다. '<%# %>'블록이 아닙니다. 실제 데이터 바인딩 된 컨트롤에 해당하는 속기가 있습니까? – David
괜찮습니다. 여기에 4.5 버전이 있습니다. http://www.asp.net/vnext/overview/aspnet/whats-new#_Toc318097391 올바른 방향으로 나를 안내해 주셔서 감사합니다! – David
David 죄송합니다. 답변도 업데이트했습니다. –