Code Overview

説明に入る前に、Web アプリケーションのコードベースがどのように構成されているかについて簡単に概説しましょう。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
   - flask-app
     - app.py   
     - models.py
     - utils.py  
     - pages/    
         - a1.py
         - a2.py
         - a3.py
         - a5.py
         - a6.py
         - a7.py
         - a9.py
     - templates/
         - a1.html
         - a2.html
         - a3.html
         - a5.html
         - a6.html
         - a7.html
         - a9.html
     - static/     
  • app.py - ウェブアプリケーションは、Flaskフレームワークを使用して実装されています。app.py はウェブアプリケーションのメインエントリポイントで、すべてのページをプロビジョニングし、データベースをブートストラップします。

  • models.py - SQLAlchemy が定義されているデータベースモデルが含まれています。これは、オブジェクトリレーショナルマッパー (OR Mapper) のライブラリです。また、オブジェクトを照会するためのヘルパー関数もいくつか含まれています。簡単化のために、Web アプリケーションはデータベースとして SQLite を使用します。

  • pages/*.py - pagesフォルダには、Webアプリケーションの各ページの実装が含まれています。後のデバッグとナビゲートを容易にするために、OWASP Top Ten の脆弱性を示す各ページは、それぞれの番号に対応した Python ファイルに記載されています (たとえば A1: Injectionpages/a1.py に書いてあります)。

  • templates/*.html - ウェブページのレンダリングに使用される、Jinja で書かれた HTML テンプレートが含まれています。pages フォルダと同じように、各テンプレートは、独自の HTML ファイル内の OWASP Top Ten の番号に対応したファイルに記載されています(つまり、A1: injectiontemplates/a1.html に書いてあります)。

  • static - Web アプリケーションによって使用されている静的コンテンツが格納されます。

AWS Cloud9 で各ファイルを開いてチェックアウトできます。次のセクションでは、このコードベースのスキャンに使用する最初の自動セキュリティツールを紹介します。