2010-07-25 93 views
3

所以我想寫一個IRC殭屍/ BOT擴展,讓用戶通過啓動遊戲中扮演一定的文字爲基礎的遊戲,從IRC消毒輸入

送他們進入某些行的部分(正則表達式匹配遊戲信號如果而不是在機器人頻道前,rbot遊戲名稱進入森林,發送「進入森林」,以進入遊戲的std,

雖然標準遊戲外由機器人緩存並通過管道傳送(例如 「讓我們歡呼 鴨子已被擊敗「 被讀入機器人內部的行緩存,然後 機器人將它發送到適當的渠道

gamename:讓我們欣喜的

gamename:鴨子已經被打敗」 )

但我有點擔心的是技巧性的東西的人在IRC上可能會做,會剝離所有非打印人物足夠安全嗎?如果一個程序退出(說他們進入遊戲的退出命令),當你嘗試寫入該程序的文件描述符std in(error)時會發生什麼?任何其他潛在的問題? 注意我將在linux或* bsd上運行此操作,因此我不需要擔心Windows特定的事情。

回答

1

逃逸引號和管道將保證您的安全,從最東西

" ' | 
+0

管子做什麼?我可以看到sql注入的單引號和雙引號......(但這可能不是數據庫供電系統)。但是,如果這是mysql注入,則忘記反斜槓,這同樣危險。 – rook 2010-07-25 04:40:06

+0

對不起,忘了反斜槓。但無論如何,對於管道:我認爲這是一個從命令行運行的irssi腳本...打破引號+ | =攻擊者在你的外殼中有一天的場景 – 2010-07-25 05:02:00

+1

a Pipe只是一個「或」而&是一個「和」。還有更多需要擔心的字符:'#&; | *?〜<> ^()[] {} $ \,\ x0A和\ xFF。 '和「'(http://php.net/manual/en/function.escapeshellcmd.php) – rook 2010-07-25 17:38:59

2

一些基礎知識,你可能要考慮:

  • 它是更安全通過,你知道,讓文字是安全的,比嘗試過濾掉您認爲可能不安全的文本。遊戲可能只接受字母數字字符,因此請檢查輸入是否僅包含這些值,並拒絕其他任何內容。
  • 在可能具有最低權限的帳戶下運行機器人,並儘可能限制對機器其餘部分的訪問。如果你可以完全使用沙盒或虛擬化,那就更好了。
  • 你應該留意終止子進程的PID,並決定做什麼,如果它退出,重新啓動或無法進一步的命令,退出BOT等

有任意數量的可能無論何時將服務暴露給網絡,您都會很好地閱讀有關一般安全編程主題的內容,例如,快速谷歌搜索會變爲this how-to

支付是偏執。如果沒有遵循適當的安全編程實踐,你可以期望的最多的是沒有人給出一個誠實的嘗試來打破它。

+0

是一個受限制的shell(比如rbash)值得什麼? – 2010-07-26 13:08:52

1

用戶輸入來自何處並不重要,它的使用方式很重要。

影響IRC的一次攻擊是CRLF injection。如果您通過IRC回顯用戶輸入,則會爲您提供幫助。攻擊者可以嘗試並注入一個回報(\ r)換行符(\ n)。這種類型的注射影響很多協議,包括HTTPSMTP。在IRC的情況下,攻擊者可以強制你的機器人向IRCD發送命令(如/ join或/ kick或/ ban :)。確保查看ASCII table並過濾掉所有的0x0A(\ n)和0x0D(\ r)。在大多數情況下,新的產品線已經足夠,所以請確保您過濾兩者。

請確保您閱讀了OWASP A1: Injection。特別是如果您在sql查詢中使用用戶輸入或在命令行上調用進程。