2011-07-15 28 views
0

我有一個Node應用程序,收集用戶的地址,並將其發送到Yahoo PlaceFinder API(它返回用戶的地理位置)。如何清理物理地址(在節點...以防止黑客攻擊)?

用戶應該填寫「地址」字段,然後點擊提交。

許多不同的地址格式是可接受的,如:

  • 90210(只是壓縮)
  • 123假街道,貝弗利山,CA 90210
  • 123假街,90210
  • ..等

我不關心,如果用戶輸入一個有效的地址或沒有。我甚至不想考慮那個RegEx需要什麼。

我很擔心安全問題。

在使用Node應用程序處理消息之前,我應該採取哪些步驟來清理用戶的輸入 - http.get()向YahooPlace finder api發送請求?

回答

2

讓我給出一個比平常「清理你的不可信數據與可接受值的白名單」反應更實用的答案。當你說「收集用戶的地址」,你其實可以:

  1. 將它傳遞給一個位置,比如,你可能會擔心注入攻擊
  2. 它渲染到一個頁面,您可能是一個數據庫擔心XSS攻擊

如果您只是簡單地將輸入信息傳遞給雅虎,那麼由於您沒有將自己暴露於上述任何一種攻擊媒介,因此問題比他們更多。您可能會發現,如果是這種情況,那麼在遵循環境衛生的道路上就沒有多少意義了,對於像自由形式的地址這樣可變的東西來說,難免會非常困難。

1

我敢說最簡單的方法是將正則表達式應用到它們的輸入中,只允許字母數字字符以及逗號和句點。我不確定是否允許所有有效的地址通過,但如果失敗,您可以顯示一條錯誤消息,說明「僅使用[A-z0-9 ,.]」

理論上應該,減輕你會看到的大多數類型的漏洞利用,因爲它們很可能需要某種形式的控制字符來破壞你的代碼。除了某種形式的溢出之外,我相當肯定逗號和句點在你的情況下是相對無害的。