DevWeeks 2020
Summer

完全リモートのウェブアプリケーション開発コンテスト

開催の目的

チームメンバー同士の親睦を深める

ウェブアプリケーション開発を体験する

情報セキュリティへの理解を深める

開発するもの

「ハッシュ値によるマルウェア判定ウェブアプリケーション」

ユーザーは自分のコンピュータに保存されている「マルウェアの疑いがあるファイル」を選択します。サーバーまたはクライアントがファイルのハッシュ値を計算し、結果をサーバー側のデータベースに保存されているハッシュ値と照合します。ユーザーはファイルがマルウェアかどうか確認することができます。マルウェアである場合は、その名称も知ることができます。

  • ユーザーがアプリケーションを利用するとき、認証を必要としません。

  • ユーザーは一度に一つのファイルのみを選択することができます。

管理者は、独自のウェブユーザーインターフェースを用いて新しいマルウェアの名称とハッシュ値をデータベースに登録することができます。また、登録されたマルウェアのレコードを削除したり修正したりすることもできます。さらに、判定履歴のレポートを閲覧することができます。

  • 管理者がアプリケーションを利用するとき、認証を必要とします。

具体的には、最初から次の3つの実行形式ファイルをマルウェアとして判定してください。当然ながら、すべて無害なファイルです。また、実行することはできません。ダウンロードして利用してください。

  • ファイル名やファイルの更新日時が異なっても、ファイルの中身が同一であればハッシュ値は同じになります。つまり、一般にファイルのハッシュ値を計算する時には、ファイルの中身だけをハッシュ関数に渡しています。

模擬マルウェア

背景

セキュリティ対策ソフトウェアがマルウェアを検出する方法の一つにハッシュ値の比較があり、コンペア法と呼ばれています。既知のマルウェアと同じハッシュ値をもつファイルが見つかれば、そのPCには当該マルウェアが存在すると判断できます。

3つの観点

正しいロジック

使いやすいデザイン

優れたプレゼンテーション

7月11日(土)

Kickoff

役割を分担する

必要な役割には次のようなものがあります。

  • フロントエンドエンジニア - HTML や CSS、JavaScript を駆使してデザインをコードに落とし込みます。

  • バックエンドエンジニア - Python や PHP を駆使してサーバー側の処理を実装します。

  • デザイナー - ウェブアプリケーションの見た目を考えます。ユーザビリティに配慮したデザインが求められます。

ウェブアプリケーション開発を学ぶ

Python & JavaScript を使って開発するならこのコース

PHP & JavaScript を使って開発するならこのコース

すべてはスケッチから

主にデザイナーが取り組みます。紙とペンを用意しましょう。

中間発表の準備

中間発表では、チームの課題や学びに加えて、high-fidelity prototype を共有してください。各チームの代表者に10分ずつ時間が割り当てられます。

7月17日(金)22時から

Interim Report

GitHub で共同作業

GitHub でソースコードの変更を管理しましょう。

Heroku にアプリをデプロイ

Heroku に制作したウェブアプリケーションをデプロイしましょう。

リファクタリング

ソースコードを整理することは大切です。他のチームの人でも理解できるように、コメントを入れたり、より一般的な書き方に変えたりしてみましょう。

最終発表の準備

最終発表では制作したウェブアプリケーションのデモンストレーションを行ってください。工夫した点や苦労した点も共有しましょう。各チームに10分ずつ時間が割り当てられます。

7月31日(金)22時から

Final Report

🏅優秀賞🏅

受賞条件

  • 最終発表を行うこと

  • 制作物がすべての仕様を満たしていること

  • 動作する状態で制作物がインターネットに公開されていること

  • 制作物のソースコードが公開されていること

結果

該当なし

参加賞

受賞条件

  • 最終発表を行うこと

  • 制作物がテーマに沿っていること

結果

3チーム(13人)