2013-07-22 1 views
0

어떻게 스크립트 태그 또는 은 iframe 태그와 이벤트 다른 태그의 전에 사용과 같은 WYSIWYG 에디터의 안전하지 않은 내용을 제거하려면?WYSIWYG 편집기의 안전하지 않은 내용을 제거하기 전에 사용 하시겠습니까?

<script> 
// Dangerous contents 
</script> 

<iframe> 
// bad web pages 
</iframe> 

<span onclick="javascript://do bad work here !!!">click me</span> 
+0

http://htmlpurifier.org/ 같은 서버 측 필터링을 사용? 코드가 편집기에서 오는 경우 사용자가 입력합니다. JS로 처리하는 경우 해를 입을 수있는 유일한 사람은 * 해당 * 사용자입니다. 사용자가 자신을 공격하는 것을 막을 수는 없습니다. 거기에서 차단하면 브라우저의 JavaScript 콘솔과 같은 다른 방법을 사용할 수 있습니다. – Quentin

답변

1

귀하는 이러한 보호를 직접 작성해서는 안됩니다.

특히, 클라이언트 측 (자바 스크립트)의 보호를해서는 안, 대신

+0

나는 그것이 클라이언트쪽에 보호를 두지 말아야한다고 생각합니다. – Chris

+0

@iman 다른 사람들의 API에도 서버 측 보호 기능이 있어야합니다. 클라이언트 측 보호에만 의존하는 것은 우회 될 수 있으므로 바람직하지 않습니다. – Chris

+0

@Chris, 맞습니다 .-) iman 클라이언트 측 보호 기능을 사용해야하는 경우에도 기존 라이브러리를 검색해야합니다. – AlfonsoML

-1

우리는

function neutralizeText(text) { 
    var i,mtch=text.match(/(<[a-z]+\s+[^>]*\s+|<[a-z]+\s+)on[a-z]+(\s)*=(\b|\s|[^>])*>/gi); 
    if(mtch!=null) { 
     for(i=0;i<mtch.length;i++) { 
      text=text.replace(mtch[i],mtch[i].replace(/\s+on[a-z]+(\s)*=/gi,' data-neutralized=')); 
     } 
    } 
    text=text.replace(/<script(\b|\s)[^>]*>(([ \t\r\n]|.)*?)<\/script>/ig,''); 
    text=text.replace(/<iframe(\b|\s)[^>]*>(([ \t\r\n]|.)*?)<\/iframe>/ig,''); 
    text=text.replace(/<object(\b|\s)[^>]*>(([ \t\r\n]|.)*?)<\/object>/ig,''); 
    text=text.replace(/<\!\-\-(.*?)\-\->/g,''); 
    text=text.replace(/<\!\-\-/g,''); 
    return text; 
} 

을 neutrilize하기 위해 이와 같은 자바 스크립트 기능을 사용할 수 있지만 충분하지 않습니다 그리고 당신은 MUST 서버 측에서 그것을 확인. javascript가 브라우저에서 사용 중지 될 수 있기 때문입니다.

+0

이것은 클라이언트 쪽 보호 방법입니다 – iman

관련 문제