説明に入る前に、Web アプリケーションのコードベースがどのように構成されているかについて簡単に概説しましょう。
|
|
app.py - ウェブアプリケーションは、Flaskフレームワークを使用して実装されています。app.py はウェブアプリケーションのメインエントリポイントで、すべてのページをプロビジョニングし、データベースをブートストラップします。
models.py - SQLAlchemy が定義されているデータベースモデルが含まれています。これは、オブジェクトリレーショナルマッパー (OR Mapper) のライブラリです。また、オブジェクトを照会するためのヘルパー関数もいくつか含まれています。簡単化のために、Web アプリケーションはデータベースとして SQLite を使用します。
pages/*.py - pagesフォルダには、Webアプリケーションの各ページの実装が含まれています。後のデバッグとナビゲートを容易にするために、OWASP Top Ten の脆弱性を示す各ページは、それぞれの番号に対応した Python ファイルに記載されています (たとえば A1: Injection は pages/a1.py に書いてあります)。
templates/*.html - ウェブページのレンダリングに使用される、Jinja で書かれた HTML テンプレートが含まれています。pages フォルダと同じように、各テンプレートは、独自の HTML ファイル内の OWASP Top Ten の番号に対応したファイルに記載されています(つまり、A1: injectionは templates/a1.html に書いてあります)。
static - Web アプリケーションによって使用されている静的コンテンツが格納されます。
AWS Cloud9 で各ファイルを開いてチェックアウトできます。次のセクションでは、このコードベースのスキャンに使用する最初の自動セキュリティツールを紹介します。