2017-10-30 12 views
0

태그에 대한 문서는 <head> 안에 있고, <base> 태그 하나만 허용되어야한다고 말합니다.<base> 태그를 보호하는 방법은 무엇입니까?

그러나이 태그는 상대 링크의 기본 URL을 <body>의 어딘가에 넣어도 성공적으로 대체합니다.

많은 관련 링크가있는 지원 티켓 시스템에서 문제가 발견되었습니다. 시스템에서 전자 메일을 렌더링하고 전자 메일의 HTML 코드에 <base> 태그가 포함되어 있으면 전자 메일이 렌더링 된 후 모든 상대 링크가 태그에 지정된 기본 URL로 변경됩니다.

Firefox, Chromium 기반 브라우저 Edge의 동작이 확인되었습니다. IE11은이를 무시합니다. 간단한 샘플 here을 확인할 수 있습니다.

웹 사이트의 HTML 마크 업을 변경하지 않고 이러한 동작을 방지 할 수 있습니까?

+0

무엇을 변경할 수 있습니까? 그리고 그 기본 태그는 어디에서 오는 것입니까? – Salketer

+0

@Salketer ''은 수신 이메일에서옵니다. 이 앱은 자바 기반 웹 사이트입니다. 아래의 제안과 이에 근거하여 앱을 대체/업그레이드하는 것 외에는 아무 것도 할 수없는 것처럼 보입니다. –

+0

무엇을 할 수있을 것으로 기대 했습니까? 당신은 당신이 놀 수없는 무엇인가를 가지고 있습니다. 당신이 변경할 수없는 것에 의해 표시됩니다 ... 문제가 아주 간단하다해도 당신이 할 수있는 일은 절대적으로 없습니다. – Salketer

답변

1

@Quentin이 제안했듯이 원치 않는 HTML로부터 HTML을 보호하는 가장 좋은 방법은 표시하기 전에 제거하는 것입니다. 불행히도, 때때로 이것은 일을 망칠 것입니다! 이 특정 예에서와 같이 사용자가 <base> 및 상대 링크가 포함 된 의지를 보낸 경우 태그를 제거하면 모든 링크가 중단됩니다.

이것을 피하기 위해 iframe을 사용할 수 있습니다. 그것들은 외국 코드를 ​​샌드 박스하기에 매우 유용한 도구입니다. 이것은 맹목적으로 힘들어해서는 안됩니다 ...

답변으로, 전자 메일을 읽는 데 사용 된 응용 프로그램에 대한 제어 권한이 없으면 전자 메일 자체를 수정하는 것이 좋습니다. 받은 편지함에 넣기 전에 불필요한 HTML (@ Quentin의 제안을 사용)을 제거하기 위해받은 편지함에 후크를 만들 수 있습니다.

2

맹목적으로 HTML 문서에 전자 메일을 삽입하지 마십시오. XSS 공격에 대한 다른 잠재적 인 소스처럼 다루십시오.

HTML을 허용하려면 DOM 인식 화이트리스트 기반 필터 (예 : PHP를 사용하는 경우 HTML 정수기)를 통해 실행하십시오.

<base>은 허용되지 않아야합니다.