2009-12-04 3 views
1

HtmlControl.Attributes의 내용을 위생 처리하는 것이 필요한지 아는 사람이 있습니까? MSDN는 점에서 침묵 :HtmlControl.Attributes의 인코딩

HtmlGenericControl control = new HtmlGenericControl(); 
/*Option 1*/ control.Attributes["value"] = HttpUtility.HtmlAttributeEncode(unsafestring); 
/*Option 2*/ control.Attributes["value"] = unsafestring; 

답변

0

이 수준의 HTML 인코딩 세부 정보에는 MSDN 설명서가 없습니다. 약간의 Reflector spelunking을 기꺼이한다면, 렌더링시 기본적으로 HtmlAttributeEncode가 대부분의 속성 값에 자동으로 적용된다는 것을 알게 될 것입니다. 그러나 이는 컨트롤 구현 자에 의해 쉽게 오버라이드 될 수 있습니다.

즉, 지정된 속성에 대해 자동 인코딩이 수행되거나 수행되지 않는다고 가정하는 것은 좋지 않습니다. 단일 지침 원칙에 따라 자동 인코딩을 사용하는 자체 컨트롤을 개발하려는 경우가 아니라면 사용하는 특성이 예상 한 인코딩 동작을 적용하는지 확인하는 단위 테스트 집합을 만드는 것이 좋습니다. 이렇게하면 현재 인코딩 동작을 확인할뿐만 아니라 향후 인코딩 동작의 변경을 방지하는 데 도움이됩니다.

1

ASPX : 정확이의 즉

http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlcontrol.attributes.aspx

,

<div id="div" runat="server">test</div> 

Codebehind가 :

protected void Page_Load(object sender, EventArgs e) 
{ 
    div.Attributes["title"] = "this is unsafe~~~\">"; 
} 

Rendere d HTML :

<div id="div" title="this is unsafe~~~&quot;>">test</div> 

추측 프레임 워크가 우리를 위해 정리했습니다!

는 UPDATE :
이 출력을 렌더링 HttpUtility.HtmlAttributeEncode 사용 : 결국 차이가있다

<div id="div" title="this is unsafe~~~&amp;quot;>">test</div> 

맞춰, 나는 이것에 대한 문서화 된 참조를 찾을 수 있습니다 아직했습니다.

+0

테스트는 훌륭하지만, 그 테스트에 대한 언급이 있습니까? –

+0

불행히도 나는 아무것도 찾을 수 없습니다. 테스트 결과를 더 편집했습니다. –

0

MSDN 문서에 HtmlEncoding이 발생하고 있다고 명확하게 표시되어 있지 않지만 다음과 같은 AttributeCollection.Add 참조가 분명해 보입니다. 나는 그것을 우회 할 수있는 방법에 대한 과부하도 보지 못했다.