programing

Express 및 ejs <%=를 사용하여 JSON 렌더링

lovejava 2023. 3. 10. 20:57

Express 및 ejs <%=를 사용하여 JSON 렌더링

index.ejs에는 다음 코드가 있습니다.

var current_user = <%= user %>

노드에는

app.get("/", function(req, res){
    res.locals.user = req.user
    res.render("index")
})

다만, 취득한 페이지에서는,

var current_user = [object Object]

그리고 만약 내가 글을 쓴다면

var current_user = <%= JSON.stringify(user) %>

취득하는 내용:

var current_user = {&quot;__v&quot;:0,&quot;_id&quot;:&quot;50bc01938f164ee80b000001&quot;,&quot;agents&quot;:...

JS를 읽을 수 있는 JSON을 통과시키는 방법이 있습니까?

오, 그건 쉬웠어, 쓰지 마.<%=,사용하다<%-대신.예를 들어 다음과 같습니다.

 <%- JSON.stringify(user) %>

첫 번째는 HTML로 렌더링하고 두 번째는 변수를 렌더링합니다(있는 그대로 평가).

차려!

API 호출을 통해 사용자를 생성할 수 있는 경우 <%->는 심각한 XSS 취약성을 남깁니다.생각할 수 있는 해결 방법은 다음과 같습니다.

Express에서 JavaScript에 변수 전달JS

나처럼 당신의 오브젝트가 다음과 같은 이스케이프 문자를 포함할 수 있다면/또는"이 보다 견고한 솔루션을 사용합니다.

var current_user = <%- JSON.stringify(user).replace(/\\/g, '\\\\') %>

이 기능은 Express의 최신 버전에서 작동합니다.

언급URL : https://stackoverflow.com/questions/13788314/express-and-ejs-to-render-a-json