[英]How to pass client-side parameters to the server-side in Angular/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傳遞到瀏覽器?
使用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.