Secure GuestBookは、PHPで書かれたWebアプリケーションです。データの持続性はMySQLで実装されています。
このデモは、「PHPとMySQL以外に何も持っていない。安全なアプリを書く必要があります。できることを表示する必要があります。」という状況で私のアプローチを示すために書かれました。
これはあなたにとっても挑戦かもしれません:このアプリを展開し、拷問し、ハックし、アプリレベルの欠陥があることを証明してください。私は95%ではないと確信しています。私が間違っていることを見せてください。
このアプリは、ホイールを再発明することではありません。はい、多くの優れたOpenSourceフレームワークとLIBがあります。
これは、毎日使用するフレームワークの内的性質を理解するという課題と、作成するアプリのセキュリティ、拡張性、保守性にどのように影響するかについての詳細です。
タスクは、サードパーティLIBSのない純粋なPHPでデモアプリを作成することです。
このアプリは、次のOPTSを備えたゲストブックです。ユーザーサインアップ、ログインとログアウト、メッセージの作成、編集、削除、応答の追加。
タスクは、サードパーティのLIBSがない純粋なPHPでデモアプリを作成して、適切なデザインが安全なアプリケーションを作成する最良の方法であることを示すことです。
単純なアプリを過度に単純化した方法で書くという明らかなテンペーションにもかかわらず、そのアプローチにはさらに明らかな欠陥があります。アプリを緩め、その眠るシンプルさの限界にownれます。
したがって、HTMLと混合した10の拡張不可能なPHPスクリプトを書くよりも、シンプルだが機能的なMVCフレームワークを書くことは価値があります。
このデモのために、ボイラープレートMVCのような環境がゼロから書かれています。純粋な非スタイルの超単純なHTMLのインターフェイス。
すべての処理は、次のシーケンス中に変異しているリクエストオブジェクトのライフサイクルを中心に行われます。
課題は主にアプリを作成することであったため、可能な限り安全であるため、アプリを実施するために取られた次のリストは次のとおりです。
侵入の試みの数を制限するために、ローカルの簡略化されたFail2banはビルインです。
主な機能は次のとおりです。
エラーとリクエストのしきい値を禁止数量は構成可能です。
バックボーンサブシステムに提供されるテストの非常に基本的な量。
前提条件:PHP 7(PDO_MYSQL、OpenSSL)、Composer(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/publicを指すようにWebサーバーのドキュメントルートを構成しますphpunit --bootstrap tests/bootstrap.php tests/ApplicationTest.php
getErrorsTillBanとgetRequestsTillBanを調整します