나는 다음과 같은 노드 익스프레스에 따라 기능이 있습니다 아약스 요청합니다 클라이언트 측 코드입니다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__
을 제거하는 방법에 대한 도움이 필요합니다.
내부 속성 인 '__proto__'을 (를) 제거 할 수 없습니다. –
@BhojendraSah :'.__ proto__'는 내부 속성이 아니지만'Object.prototype'에서 상속받은 것 – Bergi
보안 문제가 있습니까? 아니, 당신은 그것을 잘못 읽었을 것입니다. 그 기사들을 우리에게 가르쳐 주시겠습니까? – Bergi