2015-01-12 4 views
2

나는 다음과 같은 노드 익스프레스에 따라 기능이 있습니다 아약스 요청합니다 클라이언트 측 코드입니다JSON 개체에서 __proto__ 속성을 제거하는 방법은 무엇입니까?

//function on server side 
app.get('/loginCheck', loggedCheck, function(req, res) { 
    var data = {local: {}, facebook: {}}; 
    data.id = req.user._id; 
    data.local.email = req.user.local.email; 
    data.local.fname = req.user.local.fname; 
    data.local.lname = req.user.local.lname ; 
    data.local.college = req.user.local.college ; 
    data.local.degree = req.user.local.degree ; 
    data.year = req.user.year ; 
    data.mobile = req.user.mobile ; 
    data.city = req.user.city ; 
    data.facebook.id = req.user.facebook.id ; 
    //res.json(data);   

    var x = {}; 
    x.name = "someName" 

    res.json(x); 
}) 

이 다음은 서버 측에서 이전의 코드에서

//function on client side making an ajax request 
$.get("/loginCheck",function(data,status){ 
    console.log(data); 
}); 

req.user입니다 mongoose가 만든 mongodb 객체입니다. 데이터 객체 (어떤 선택된 속성이 req.user 객체 임)를 보내고 응답으로 JSON 객체를 보냅니다.

변수 x은 사용자 정의 변수입니다.

문제는 : 나는 클라이언트에 data 개체를 보낼 때, __proto__ 속성은 또한 내가 클라이언트에 x을 보내고 때 발생되지 않는 개체에 추가됩니다. 그러나 일부 기사에서 __proto__과 관련된 보안 문제가 있기 때문에 클라이언트 측에 __proto__을 사용하고 싶지 않습니다.

data 개체에서 __proto__을 제거하는 방법에 대한 도움이 필요합니다.

+0

내부 속성 인 '__proto__'을 (를) 제거 할 수 없습니다. –

+1

@BhojendraSah :'.__ proto__'는 내부 속성이 아니지만'Object.prototype'에서 상속받은 것 – Bergi

+0

보안 문제가 있습니까? 아니, 당신은 그것을 잘못 읽었을 것입니다. 그 기사들을 우리에게 가르쳐 주시겠습니까? – Bergi

답변

0

제거 할 필요가 없습니다. 문제가 발생하지 않습니다.

이와 같이 사용할 수 있습니다.

$.each(data, function(k, v) { 
    console.log(k, v); 
}); 
+0

jquery 기반 코드가 맞습니까? – amulya349

+0

@ amulya349 예. –

+0

답변 해 주셔서 감사합니다. – amulya349

관련 문제