我一直在研究一個應用程序,該應用程序允許構建第三方擴展來擴展應用程序的功能。當然,所有這些都在PHP中。我想通過校驗和功能在特定目錄中運行文件來添加一些安全填充。如果文件未通過校驗和,則文件不被「包含」,通知該安裝的管理員,並且該模塊被禁用,直到管理員採取行動(重新啓用並記錄該異常或重新安裝模塊) 。包含之前的PHP校驗和()
我現在遇到的問題是無論何時用戶運行include()
函數都可以運行該校驗和。我寧願不讓他們爲了包含一個文件而背靠背運行兩個函數,但是如果必須的話,我會的。並非所有的第三方擴展都會非常願意運行兩個函數(類似於if(checksum_function($bleh)) include($bleh);
),即使它們是,執行include()
時運行校驗和會更容易(也更安全),而不是雙倍行數爲include()
報表。
我已經做了一些搜索,並沒有找到太多。想法?提前致謝!
crc碰撞可以使用代數來計算。 – rook 2010-07-15 07:24:07
感謝Pekka。我打算爲我的校驗和使用md5,但我想這會更加昂貴。我沒有想過使用__autoload()。我可能會放棄這個想法,因爲一旦實施其他一切,實際上可能會非常昂貴。不過,我肯定會玩一些__autoload()。謝謝! – Swivel 2010-07-15 07:32:38
@您認爲惡意腳本修復該文件是否意味着它通過了檢查?在大多數情況下,我認爲這不會成爲一種危險,因爲如果攻擊者a)知道安全機制並且b)可以在相關網絡空間上寫入文件,則無論如何都會丟失。不過,好點。 – 2010-07-15 07:33:02