2012-10-10 135 views
1

一個HTML表單,一個php文件和一個文本文件。PHP安全寫入文本文件?

表單有一個輸入框,它使用GET或POST將輸入的字符串發送到PHP文件。 PHP文件使用fopen 'a',fwritefclose將字符串寫入文本文件,並且根本沒有消毒。

該文本文件設置爲權限777,並與其他文件位於同一文件夾中。

這裏是否存在安全隱患?某人是否有可能使用會造成任何損害的表單發送內容?如果是,什麼?

如果txt文件設置爲666,怎麼辦?

+0

6對於所有者,6對於組和6對公衆 –

+0

777允許幾乎任何人和每個人讀,寫和執行權限。我猜這可能是你的一些擔心!如果它是一個文本文件,755就足夠了。 – MLeFevre

+1

爲什麼不是660或770?這取決於您的服務器配置。 – FrediWeber

回答

1

永遠不會執行

根據這個文件的用途,應該不涉及多大的風險。只要確保文件是從未執行

這意味着,從來沒有eval()該文件的內容,或將其更改爲.php或任何其他可執行文件。

但是,如果內容是永遠寫在頁面上的,或者是用戶可查看的,那麼這樣做會產生安全風險。

+0

如果我可以在瀏覽器中打開它(因爲它是一個.txt文件),那麼不好嗎?我每天使用瀏覽器窗口檢查內容...他們能否向我發送病毒? – David19801

+0

不,內容不會作爲.txt文件執行,這應該是安全的。 – Kao

0

從網絡安全的角度來看,只要文本文件的路徑是以任何其他方式進行硬編碼或保護,我都沒有看到任何問題。但是,如果文件丟失或只讀(如果文件系統是由管理員以只讀方式裝入的,則會發生,如果發生這種情況),您還沒有說什麼。

這就是說,這個用例也完全沒用,因爲文本文件只用作數據接收器。從未讀取的數據匯無用。當您想從文件讀取時,可能會出現問題。

+0

有人可以在輸入表單中發送php代碼到達.txt文件,然後運行.txt文件嗎? php代碼可以從服務器上的.txt文件運行嗎? – David19801

+1

@ David19801如果你的服務器配置正確,這應該不成問題。 Apache例如通過擴展來限制PHP執行。 –

+0

我在哪裏可以檢查服務器上哪些擴展php可以執行? – David19801

1

我通常使用3種方法來提高寫入文件的安全性。 1)將文件移出webroot並移入某個受限訪問的文件夾,如cgi-bin。文件路徑和任何密碼也應該保存在webroot之外。 2)然後通過將敏感數據包含在您的頁面中來包含敏感數據。所以如果PHP解析器失敗,人們只會看到一個變量名稱而沒有任何細節。 3)如果你正在寫一篇文章或者到達正在寫作的文件,你還可以仔細檢查這些值並指出可能導致問題的字符,腳本等。