웹 페이지에서 외부 HTML을 WYSIWYG 편집기로로드하는 상황이 있습니다. 외부 HTML은 신뢰할 수있는 출처에서 왔으며 여러 페이지의 두 특정 <div>
태그 사이에있는 내용을 포함합니다.인라인 JS 실행 방지
제 문제는 일부 페이지에 인라인 자바 스크립트 이벤트 핸들러가 있다는 것입니다. WYSIWYG 편집기에서 작업 할 때 특정 이벤트가이 js를 실행하게합니다.
대부분 콘솔의 내용이 ... is not defined
인 오류로 채우는 것 외에는 아무 것도하지 않으며 이것이 모두 문제가되지는 않습니다. 그러나 여전히 지저분하고 어색하게 될 수있는 alert(...)
과 같은 것을 실행할 수있는 어딘가의 페이지가 없는지 나는 알지 못합니다. 코드는 모두 신뢰할 수 있지만 의도 한 컨텍스트에서 분리되면 바람직하지 않은 결과가 발생할 수 있습니다.
바람직하게는 인라인 스크립트를 수정하지 않고이 실행을 전역 적으로 차단하는 방법을 찾고 싶습니다. 나는 각 처리기에 =false;
을 부착하는 것과 같은 작업을 할 수 있지만, 들어오는 요소를 모두 확인해야하며 정규 표현식을 사용하더라도 성능이 저하됩니다. 또한 편집 된 HTML을 서버에 다시 제출하기 전에 제거해야합니다.이 작업은 큰 고통처럼 보이며 완벽하게 수행하기가 어렵습니다.
이 온라인 코드가이 특정 컨텍스트 내에서 실행되는 것을 방지 할 수있는 방법이 있습니까?
콘텐츠를로드하는 방법에 따라 모두 다릅니다. 일반적으로 페이지 조각의 인라인 스크립트는 조각이 DOM에 추가 될 때 ** 평가되지 않습니다 **. 평가 중이라면 일부 코드 (또는 사용중인 라이브러리)가이를 수행하고 있기 때문입니다. – Pointy
WYSIYG 편집기를 만들기 위해 $ .jqte 플러그인을 사용하고 있습니다.내 추측은 소스입니다. 왜냐하면 편집 전에 내용을 먼저 렌더링해야하기 때문입니다. 그게 내가 원하는거야. 그렇지 않으면 모든 태그를 제거하거나 태그없이 콘텐츠를 출력 할 수 있습니다. 나는 방금 각도 또는 이와 유사한 것이 이것이 올바른 도구 였을 것이라는 것을 깨달았지만 나는 생각하기에는 너무 멀었다. – user1167442