2009-08-23 84 views
0

我正在一個好用戶輸入網站域名http://www.mysite.com的網站上工作。PHP,RFI,並保持安全

但我一直在閱讀關於遠程文件包含(RFI),它非常有趣。只需加入?page = http://www.mysite.com/index.php?或附近的東西,我得到某種類型的錯誤(500)。 其他人民網站使用wordpress/PHP,如果我這樣做我也得到一個錯誤。

我不知道這是否意味着腳本已經運行,但我怎樣才能保持輸入清潔?我已經使用REGEX,但我希望用戶能夠輸入任何網站並相應地處理它。我當然不希望腳本中的任何地方出現嚴重的安全漏洞。

晚安這裏在波士頓在東海岸[EST]

回答

1

HTTP 500錯誤你看到聽起來似乎mod_security,爲Apache模塊,正在產生。 mod_security根據一組安全規則掃描所有輸入,其中一個可能正在檢查RFI。這是第一道防線。

爲了防止RFI,您還可以做其他一些事情。首先,從PHP 5.2.0起,有一個選項allow_url_include。當設置爲false時,這將導致PHP在包含URL的文件時引發錯誤。大多數人會希望將此設置設置爲虛假

此外,還有消毒您的輸入。有很多種方法可以做到這一點,確實像使用正則表達式,但你也可以看看filter extension。只要確保足夠嚴格,你就不會想讓某人潛入../../,並且在文件層次結構中查看一個或兩個以上級別。

安全文件訪問最安全但有時也是非常不切實際的方法是使用允許包含的確切文件的白名單。