我正在使用nodejs,並且我的站點的一部分將只是簡單地提供文件,基本上在包含公共文件的某個目錄上使用fs.readFile
。例如,當您請求mydomain.com:1234/hello/info.html
時,我的腳本將請求文件publicfiles/hello/info.html
並將結果發送給客戶端。但是,我知道如果攻擊者輸入mydomain.com:1234/../evilurl/userpasswords.txt
nodejs將嘗試獲取publicfiles/../evilurl/userpasswords.txt
,這與evilurl/userpasswords.txt
確實相同,換句話說,他們可以訪問publicfiles
目錄中的文件並訪問「安全」信息。我知道我可以通過簡單地確保req.url
不包含..
來防止這種情況發生,但是用戶可以通過其他方式訪問錯誤的文件嗎?他們可以使用某種轉義序列而不是..
這意味着同樣的事情嗎?另外,我不想爲此使用快遞。如果有專門爲此的圖書館,我很好,但我不想要一個像明確的巨大框架。確保安全url nodejs
0
A
回答
1
我也主張使用現成的包來提供靜態內容。我甚至會說你應該使用httpd/ngnix來爲你的靜態內容提供服務。
這就是說,你可以使用path.resolve()
。根據您的基地目錄publicfiles/
解析請求路徑,並確保結果以publicfiles/
作爲前綴。如果沒有,那麼這是一個不好的要求。
+0
感謝您對path.resolve的建議,我已經能夠使其工作。如果你可以提供一些示例代碼和文檔鏈接,那會更好,但這沒問題。謝謝!另外,我不想使用Apache/httpd,因爲我也有一些項目使用節點進行靜態文件服務。 – Markasoftware
相關問題
- 1. android確保安全
- 2. 確保Firebase數據安全
- 3. 確保評論安全
- 4. NodeJS&NPM:包安全
- 5. 使用spring安全確定JSP中的安全url
- 6. 如何使用Spring安全保護URL?
- 7. 的URL安全
- 8. CodeIgniter URL安全
- 9. NodeJS + Express:如何保護URL
- 10. NodeJS API - 安全問題
- 11. Websockets,socket.io,nodejs和安全
- 12. 使用NodeJs與Firebase - 安全
- 13. 確保Web服務的安全
- 14. 如何確保cURL的安全性?
- 15. 確保OPKG存儲庫的安全
- 16. 如何確保iOS設備安全
- 17. 確保藍牙LE消息的安全
- 18. 如何確保Webservice的安全性?
- 19. 確保Web服務的安全.Net
- 20. Android如何確保安全性?
- 21. 確保API密鑰的安全
- 22. 確保與Java泛型類型安全
- 23. 確保代碼中的線程安全
- 24. 確保MBean操作的安全
- 25. 確保.DLL/.so的安全性
- 26. 確保Joomla對前員工的安全
- 27. 確保內部WCF服務的安全
- 28. 確保UDP安全 - OpenSSL或GnuTls或...?
- 29. 確保微服務春雲安全Oauth2
- 30. 確保工作區變量的安全
Express不是一個「龐大的框架」。你應該使用它。或者只是使用https://npmjs.org/package/st – SLaks
@SLaks我想你是對的。我的意思是,express只是一個路由框架。噢,它也有請求管理。就這些。沒有等待,它也可以處理意見。只有三個主要特點。就這些。不,等等,它也碰巧也有會話管理。你明白了。 – Markasoftware
@Markasoftware不清楚「*請求管理*」是什麼意思。中間件?如果是這樣,那麼大部分是完全選擇加入的。你必須明確地使用()' - 包括'session()'管理。而且,Express不支持觀點;它在視圖引擎上提供了一個輕便的通用包裝。而且,如果你不想使用視圖引擎,那麼不要。你可以'write()'/'end()','send()'或'sendfile()'。 –