JavaScript의 replace함수를 사용하던 와중
아래와 같은 경고문이 노출되며 작동되지 않았습니다.
오류메시지 노출
아래 코드와 같이 매개변수로 들어오는 값의 html 태그를 치환시키기 위한 함수를 사용 중이었습니다.
escapeHtml = function( text ) {
var map = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
return text.replace(/[&<>"']/g, function(m) { return map[m]; });
};
replace함수는 replace를 하려고 하는 데이터가 parseInt, 즉 숫자일 때에 오류가 발생합니다.
오류 해결
이러한 오류가 발생한다면 매개변수를 문자열로 교체한 뒤 replace 하게 되면 정상적으로 오류를 해결할 수 있습니다.
return text.replace(/[&<>"']/g, function(m) { return map[m]; }); 구문에서
매개변수로 전달되는 text를 문자화시켜주기 위해 toString 함수를 사용하여 return text.toString().replace(/[&<>"']/g, function(m) { return map[m]; });로 수정하였습니다.
escapeHtml = function( text ) {
var map = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
//return text.replace(/[&<>"']/g, function(m) { return map[m]; });
return text.toString().replace(/[&<>"']/g, function(m) { return map[m]; });
};
또한 인코딩이 지정되지 않으면 원시 버퍼가 반환되기 때문에 발생하는 오류이기도 하기 때문에 replace함수는 원시 버퍼가 아닌 인코딩 처리한 문자열로 처리되어야 하는 함수입니다.
반응형
'BugReport' 카테고리의 다른 글
[Git] fatal: detected dubious ownership in repository [프로젝트 경로] 오류 발생 (0) | 2024.05.13 |
---|---|
[MSSQL] 열 이름 '컬럼명'이(가) 불확실합니다. 오류 (2) | 2023.01.12 |
[Git] Unlink of file [파일 경로] failed. Should I try again? (y/n) (2) | 2022.10.28 |
[Git] git add * 시 경고문 발생(The following paths are ignored by one of your) (2) | 2022.04.25 |
[Git] error: Cannot delete branch 브랜치 삭제 안됨 (2) | 2022.03.24 |
댓글