2016-09-16 11 views
4

내 사이트의 전체 텍스트에서 기본 텍스트 구성 요소로 사용되는 서식있는 텍스트 편집 위젯 (xtype="richtext")을 사용하는 구성 요소가 있습니다.서식있는 텍스트 위젯의 입력을 기반으로 HTL의 전화 연결 렌더링

사용자는이 구성 요소를 사용하여 입력 한 텍스트에 tel URI 체계를 사용하여 전화 링크를 삽입 할 수 있기를 원합니다. 이 번

{$text @ context='html'} 

이 이루어집니다의 값을 :

대화는 그들이 서식있는 텍스트 편집의 내용이 나중에 전망이 좋은/HTL에서 렌더링 할 때 단, html 컨텍스트를 사용 그렇게 할 수 있습니다 내 속성은 무시됩니다.

저장소에 저장된 HTML은 다음과 같습니다

<a href="tel:04242424242">Call us!</a> 

그리고 무엇 실제로 저자 인스턴스 페이지에 렌더링 것은입니다 : 게시자에

<a>Call us!</a> 

이 태그 때문에 모두 제거됩니다 링크 검사기.

unsafe으로 컨텍스트를 변경하면 href이 렌더링되지만 이는 받아 들일만한 해결책이 아닙니다. 이 구성 요소는 많은 장소에서 사용되며 XSS 보호가 충분한 지 확인하고자합니다.

HTL에서 전화 링크를 처리하는 방법에 영향을 줄 수 있습니까?

<regexp name="onsiteURL" value="([\p{L}\p{N}\\\.\#@\$%\+&amp;;\-_~,\?=/!]+|\#(\w)+)"/> 
<regexp name="offsiteURL" value="(\s)*((ht|f)tp(s?)://|mailto:)[\p{L}\p{N}]+[\p{L}\p{N}\p{Zs}\.\#@\$%\+&amp;;:\-_~,\?=/!]*(\s)*"/> 
<regexp name="telephoneLink" value="tel:\+?[0-9]+"/> 

및 추가에 :

나는 apps/cq/xssprotection/config.xml의 오버레이에 추가 정규 표현식을 추가하는 시도

<attribute name="href"> 
    <regexp-list> 
     <regexp name="onsiteURL"/> 
     <regexp name="offsiteURL"/> 
     <regexp name="telephoneLink"/> 
    </regexp-list> 
    <!-- Skipped for brevity --> 
</attribute> 

하지만 그 방식에 영향을하지 않는 것 전망이 좋은/HTL 탈출 html 컨텍스트의 문자열

나는 또한 /libs/sling/xss/config.xml에있는 Sling xss 규칙을 오버레이했지만 아무런 행운도 없었습니다.

어떻게 할 수 있습니까?

답변

9

두 XSS 보호 설정 파일이 있습니다

  1. /libs/cq/xssprotection/config.xml
  2. /libs/sling/xss/config.xml

전망이 좋은 당신이 경로에 그것을 중첩해야한다는 것을 의미 두 번째를 사용 /apps/sling/xss/config.xml

언급 할 가치가있는 점은 새 구성은 aem insta를 다시 시작한 후에 만 ​​적용되는 것 같습니다. nce.

+0

'/ libs/sling/xss'에도 하나의 파일을 덧씌우려고 시도했지만 작동하지 않는 것 같습니다. 내가 잃어버린 뭔가가있을 수 있습니다. 다시 시작하겠습니다. – toniedzwiedz

+0

그래, 인스턴스를 다시 시작할 때 작동하기 시작했습니다.건배 :) – toniedzwiedz

+0

@toniedzwiedz이 답변은 잘못이 아닙니다. 그것은'tel :'링크를 가능하게하는 한 방법입니다. 하지만 필자의 권고는'LinkChecker' 설정을 살펴 보는 것입니다. 귀하의 전화 링크에있는 'href'는 아마 링크 검사기에 의해 제거됩니다. 'tel :'등의 적절한 _Special Link Prefixes_ 목록을 구성 할 수 있습니다. 그런 다음 Link Checker는 더 이상 해당 접두어가있는 링크를 제거하지 않습니다. 이것으로 오버레이를 사용할 필요가 없습니다. – Jens