2012-01-23 2 views
0

나는 다음과 같은 노드 모듈을 사용하고 노드 검증 모듈 교체가 없습니다 : https://github.com/chriso/node-validator개체 내가 XSS를 방지하고자하기 때문에 어떤 방법이

 str = str.replace(non_displayables[i], ''); 
       ^
TypeError: Object 0 has no method 'replace' 
    at remove_invisible_characters (C:\Users\Jack\Desktop\Dropbox\Nimble\node_mo 
dules\validator\lib\xss.js:180:19) 

나는 다음과 같은 정보를 살균과를 만들려고 해요 JSON 개체 :

var story = { 
    _id:   sanitize(data._id).xss(),   //string 
    title:  sanitize(data.title).xss(),  //string 
    deadline:  sanitize(data.deadline).xss(), //date string 
    description: sanitize(data.description).xss(), //string 
    sp:   sanitize(data.sp).xss(),   //number 
    value:  sanitize(data.value).xss(),  //number 
    roi:   sanitize(data.roi).xss(),   //decimal number 
    type:   sanitize(data.type).xss(),  //string 
    lane:   sanitize(data.lane).xss()   //Typically 0 
} 

나는 내 코드의 상단에있는 모듈을 포함하고 있습니다 : sanitize = require('validator').sanitize;

선 178-1 모듈에서 xss.js 83 : 당신은 어떤 기능이 즉 str = str.replace(...); 라인을하고있어입니다에 0 (숫자)를 통과하고 같은 오류에서

function remove_invisible_characters(str) { 
    for (var i in non_displayables) { 
     str = str.replace(non_displayables[i], ''); 
    } 
    return str; 
} 
+4

무엇이 질문입니까? –

답변

3

, 그것은 보인다. 숫자에는 replace 기능이 없습니다. 해당 함수가 입력을 문자열로 예상하면 str = String(str).replace(...);String 생성자를 사용하여 new없이 호출 할 때 형식 변환을 수행 할 수 있습니다. details.

관련 문제