2011-06-15 6 views
1

fancybox를 사용하여 팝업 창에 사용자 생성 제목이있는 사진이 표시됩니다.jquery에서 이스케이프 된 제목 속성의 이스케이프 처리가 해제됩니다.

console.log($("<a title=\"&lt;script&gt;alert('test')&lt;/script&gt;\">").attr('title')); 

출력 : <script>alert('test')</script>

console.log($("<p>&lt;script&gt;alert('test')&lt;/script&gt;</p>").html()); 

출력 : &lt;script&gt;alert('test')&lt;/script&gt;

console.log($("<p>&lt;script&gt;alert('test')&lt;/script&gt;</p>").text()); 

출력 : <script>alert('test')</script>

팝업에 표시된 탈출 타이틀을 얻기 위해 시도하는 동안, 나는 다음과 같은 행동을 눈치

내 문제는 짹 le는 obj.attr('title')을 호출하여 이스케이프 된 제목 대신 이스케이프 처리되지 않은 제목을 반환합니다.

obj.attr('title') 전화로 탈출 한 제목을 어떻게 얻을 수 있습니까?

답변

1

&의 모든 발행 수를 바꾸이 같은 제목에 별도의 엔티티 레벨을 추가 할 경우 작동합니다 :

$("<a title=\"&amp;lt;script&amp;gt;alert('test')&amp;lt;/script&amp;gt;\">").attr('title'); 

서버 측 환경에 따라 달라지는 PHP 예제 :

$title = str_replace("&","&amp;",$title); 
+0

내 템플릿 시스템이 방법은 문자 "<", ">", "&"와 "" "을"< ","> ","& "및"" "을 변환하여 태그를 탈출하기 위해 제공합니다. title = ""html 페이지를 생성 할 때 이스케이프 메소드를 통해 내용이 필터링되므로 충분히 안전하다고 생각합니다. 이제 &에서 또 다른 탈출구를 수행해야합니다. & 나는 이것을 놓친 것이 거의 없으며 XSS 보안 보유 기간이 될 것입니다. – perlwle

1

문제가 발생하지 않습니다. 설정이 이미 잘못되었습니다 (항목이 브라우저로 대체 됨).
사용 $().attr() 제목 설정 :

$("<a/>").attr('title',"&lt;script&gt;alert('test')&lt;/script&gt;") 

을 .. 또는 &amp;

관련 문제