簡體   English   中英

在Node.js / express中將對象安全地傳遞給客戶端

[英]Safely pass object to client in Node.js/express

一個常見的問題是如何將對象從Node.js / Express.js傳遞到瀏覽器。 可以使用JSON字符串化來執行此操作,但是如果對象包含用戶提供的數據,則可以打開腳本注入和其他攻擊途徑。

使用Base64的此鏈接中提到的方法是否有缺點?

https://stackoverflow.com/a/37920555/645715

相關鏈接:

在node / express + ejs中將對象傳遞給客戶端?

如何將包含帶引號的字符串的JavaScript對象從node.js傳遞到瀏覽器?

將NodeJS Express對象傳遞給AngularJS 1.6

在node / express + ejs中將對象傳遞給客戶端?

使用Base64編碼確實解決了傳遞注入攻擊的緊迫問題,但是並不一定解決可能存在的注入攻擊浮出水面的問題。 例如,此小提琴表明它確實防止了當前問題: https : //jsfiddle.net/9prhkx74/

var test2 = JSON.parse(window.atob('PC9zY3JpcHQ+PHNjcmlwdD5hbGVydCgndGVzdDInKTwvc2NyaXB0PjxzY3JpcHQ+'));

這不會顯示警報框,只會引發有關無效JSON的錯誤。 但是,如果將其更改為文字字符串,則會顯示警報框(容易注入)

var test2 = JSON.parse("</script><script>alert('test2')</script><script>")

現在,如果您立即將其解析為JSON對象,它將被炸毀,一切都會變得“安全”。 但是,如果由於將其傳遞給其他值而將其分配給某個值,則仍然存在潛在的問題。

建議不要首先對注入本身施加創可貼,而首先建議對其進行修復並適當地轉義數據,然后再將其傳遞回客戶端或在服務器端進行處理。

有很多庫可以幫助您做到這一點

https://www.npmjs.com/package/sanitize https://www.npmjs.com/package/express-sanitizer

這是一篇非常不錯的文章,強調了為什么重要的是進行清理,而不僅僅是修補潛在的惡意數據: https : //lockmedown.com/5-steps-handling-untrusted-node-js-data/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM