我有一個使用CodeIgniter框架以PHP編寫的網站。幾年來,這項工作一直在進行中,我最終希望開源。它目前運行到大約10K行PHP(不包括CodeIgniter庫)。最近我清楚我無法繼續使用CodeIgniter。出於安全考慮,我想遷移CodeIgniter
它的主要問題是,它似乎像開發人員不瞭解XSS和正確的轉義,或他們不在乎。即使直接以屬性結尾的函數的參數(例如,anchor()
)也不會被轉義。生成表單輸入的函數關於它們是否轉義以及文檔是否對此主題保持沉默(我所能做的只是閱讀源代碼)而不一致。而「模板引擎」,如果它甚至可以被稱爲,也不會逃脫,這使得它基本上無用。每當我想輸出一個鏈接時,我都厭倦了寫作<?=anchor(html_escape('foo/bar/' . rawurlencode($baz)), html_escape($baz))?>
。它使得代碼變得糟糕透頂,我確信我錯過了一些地方。在某些情況下,投入不恰當地被「消毒」,並且這種行爲不能被關閉;例如,如果用戶在任何形式的輸入字段中輸入了包含%10
的字符串,那麼該子字符串在應用程序看到它之前被刪除。我的代碼依賴於許多CodeIgniter庫,包括數據庫(活動記錄模式),電子郵件,表單驗證,分頁和會話。
什麼是另一種PHP框架,其中:
- 是基於MVC模式;
- 有一個適當的模板引擎,不吸吮逃避的東西;
- 是比較容易從笨過渡到(具有許多相同的庫)
?
你爲什麼不去做我所做的事情,並擴展有問題的CI類,以便他們做你所做的事情?我不喜歡他們使用的整個黑名單XSS方法,所以我用我自己的MY_Security.php類擴展了核心安全類,並改爲使用白名單衛生。對於所有的類都可以做到這一點,這很簡單,然後可以放到任何應用程序文件夾中以覆蓋默認方法。 –
在我看來,這將需要重寫CI庫的大部分,如果我要這樣做,那麼我可能只是使用不同的框架。 – Brian