Secure Genderbook是一個用php編寫的Web應用程序。數據持久性是用MySQL實現的。
該演示是為了證明我在這種情況下的方法:“除了PHP和MySQL,您什麼都沒有。您需要編寫一個安全的應用程序。展示您可以做什麼。”
這也可能對您來說是一個挑戰:部署此應用程序,折磨它,破解它,證明存在應用程序級缺陷。我95%肯定沒有。告訴我我錯了。
這個應用不是要重新發明輪子。是的,有許多好的開放源框架和庫。
這更多是關於了解我們每天使用的框架的內部性質的挑戰,以及它如何影響我們創建的應用程序的安全性,可擴展性和可維護性。
任務是在沒有第三方libs的純PHP中編寫演示應用程序。
該應用程序是一本帶有以下選擇的留言簿:用戶註冊,登錄和註銷,消息創建,編輯,刪除,添加回复。
任務是在沒有第三方LIB的純PHP中編寫一個演示應用程序,以證明正確的設計是創建安全應用程序的最佳方法。
儘管顯而易見的是以一種過於簡單的方式編寫一個簡單的應用程序,但這種方法存在更明顯的缺陷:您會放鬆對應用程序的控制,並淹沒在這種簡單的局限性中。
因此,是的,值得編寫一個簡單但功能上的MVC框架,而不是編寫與HTML混合的10個不擴展的PHP腳本。
為此演示,從頭開始寫了一個類似MVC的環境。純淨的超簡單HTML的接口。
所有處理都是圍繞請求對象的生命週期進行的,該對像在以下順序中被突變:
由於挑戰主要是關於編寫應用程序,但盡可能安全,以下用於執行該應用程序的介質列表:
為了限制闖入嘗試的次數,本地簡化的Fail2ban是Buil-In。
主要功能是:
禁用錯誤和請求數量的閾值是可配置的。
為骨乾子系統提供了非常基本的測試。
先決條件:PHP 7(PDO_MYSQL,OPENSSL),作曲家(僅適用於PHPUNIT),HTTP服務器
WEBAPP_BASEDIR - should point to src/ folder
WEBAPP_STORAGE_MYSQL_HOST
WEBAPP_STORAGE_MYSQL_USER
WEBAPP_STORAGE_MYSQL_PASSWORD
WEBAPP_STORAGE_MYSQL_DB
src/publicphpunit --bootstrap tests/bootstrap.php tests/ApplicationTest.php
getErrorsTillBan和getRequestsTillBan