Pakutter

OVERVIEW

ログイン機能のあるブログアプリ.PythonのフレームワークFlaskで作成.

【URL】https://pakutter.onrender.com/

【Github】https://github.com/Momokonomi/Pakutter

【概要】

文字だけを投稿できるWebアプリケーションである。

名前は今後もブログアプリ開発の参考にしたいWebアプリケーション X(旧Twitter)から

【使用技術】

HTML,CSS,Bootstrap,Python,Flask,VScode,Git,Github

【機能】

ユーザー登録・ログイン

2つのテキストボックスがあり、上にユーザー名・下にパスワードを入力してユーザー情報を登録する.

ユーザー名が被った場合は別のユーザー名を入力する必要がある.また、空欄がある場合は入力が求められる.

②文章の閲覧・投稿・削除

ログイン後、上図のようなページに遷移する.ここでは自分や他者が投稿した記事を確認できたり、左上の投稿ボタンから新しく記事が投稿できる.

記事はタイトル・投稿者・投稿日時のみ確認でき、タイトルをクリックすることで、その記事の本文を確認することができる.また、自分の記事にのみ編集・削除ボタンが現れ、記事の編集と削除が可能になっている

上図ではユーザ名testでログインしている.testユーザーの他にtest2ユーザーが投稿していることが確認できる.

【脆弱性】

このアプリケーションには本番に耐えられない致命的な脆弱性がいくつかある.ここでは現在私が認識している脆弱性とその原因を記す.

①パスワードの入力規則が未実装

パスワードに入力規則がない.そのため、一文字のみなど簡単なパスワードも登録可能になっている.

②二段階認証・二要素認証が未実装

ユーザー情報を登録するとき,メールアドレスや電話番号の登録が求められていない.そのため,二段階認証・二要素認証が使用できず,第三者が簡単にログインできてしまう.

パスワードの入力規則未実装と合わせて,ブルートフォース攻撃に非常に弱い

③通知機能が未実装

他の端末でログインした際の通知がないため、第三者が自分のユーザー情報を用いてログインした否かが全くわからない.

④他考慮すべき脆弱性

・逆ブルートフォース攻撃:同じIPアドレスからの通信回数を制限していないこととパスワードの入力規則の未実装が合わさり、この攻撃にも非常に弱いと考える

・SQLインジェクション:現在のスクリプトではSQL文を検知する処理は記述していない.そのため、記事の入力フォームにSQL文が含まれていた場合,発生する可能性がある

【今後の展望】

①上記の脆弱性の改善

パスワードの入力規則は即実装したい

②APIを使用した天気とニュース機能の実装

ニュースはNews API,天気はFree Weather APIが利用できることを確認している.

これらを実装し,より実用的なものにしていきたい

③ユーザーインターフェースの改善

現在はログアウトボタンが投稿ボタンの横にある,自分の投稿のみを確認するページがないなど頻繁に利用するには不便なUIをしている.

②のAPI利用と合わせて,ページを増やしたり、そのページに遷移する直感的なボタンを作成する