2011-08-24 36 views
1

考慮一個非常基本的python套接字,它可以在主機上打開一個連接到互聯網的端口,並監聽在終端中顯示的傳入消息。用Python打開一個端口涉及哪些適當的安全措施?

保持這樣的港口開放被認爲相當脆弱,正確嗎?我應該實施哪些安全功能?傳入的數據是否應該進行消毒?這是怎麼回事?

謝謝。

+3

到目前爲止,您是否有任何代碼?你通過了什麼?永遠不要信任你沒有消毒的數據。加密任何敏感的東西。有一個監聽端口本身並不是一個缺陷,但你需要提供更多的上下文來獲得有意義的答案。 –

+0

有些人只是沒有線索。 – rook

回答

6

爲什麼這會很脆弱?你的程序接受來自任意人的連接(可能在整個互聯網上),並讓它們向終端顯示任意字節。這裏只有一個攻擊媒介:你的終端本身。如果您的終端有一個錯誤(例如)執行字節而不是打印他們,那麼系統可能因此設置而受到損害。

但是,這是不太可能的 - 事實上,驗證程序沒有完全破壞的一種常用技術是將任意數據傳入它們,並查看它們是否/如何爆炸。這叫做fuzz testing,如果在你的終端上進行模糊測試時有這樣的錯誤,模糊測試會產生真正有趣的爆炸,而不僅僅是終端垃圾。

僅僅因爲端口上的Internet可以訪問某些內容,並不意味着存在漏洞。你需要一個實際可利用的缺陷,在這種情況下,可能沒有一個。 (雖然從來不知道)

+0

的確,除非你的Python腳本['exec()是通過線路發送的代碼](http://thedailywtf.com/Articles/Client-side_PHP.aspx),否則你應該沒問題。 –

1

你想保護什麼?使用Python監聽套接字不會直接暴露給vuln,除非Python解釋器有一個未知的vuln。

處理傳入的消息是另一回事。

如果您正在寫入終端,是否意味着傳入的數據預期會採用特定的格式?你如何解析傳入的數據?如果有人將/ dev/random放入您的端口並將連接打開很長時間,會發生什麼情況?

消息的順序或內容是否重要?

依此類推。這個場景的具體內容並不多,所以建議也同樣模糊。首先,請查看OWASP secure coding principles中的一般概念(即使您不處理HTTP或HTML,也可以使用它們)。

+0

但解釋器可能正在執行一個易受攻擊的程序... – rook

+0

是的,這是我在「處理傳入消息」方面的區別。原始帖子在數據到達套接字之間的代碼路徑上過於模糊,並顯示在終端中。 – Mike