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