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