銀行ログインシステム(3回失敗でロック)のサンプル

Security

概要

このリポジトリは、Pythonで作られた学習用の「銀行ログイン」システムのサンプルです。ユーザーから氏名、CPF(ブラジルの個人識別番号)、メールアドレス、パスワードを受け取り、入力値の基本的なバリデーションを行います。認証に関しては、パスワードの試行回数を3回に制限し、3回失敗するとアクセスをブロックするロジックが組み込まれています。主目的は条件分岐、ループ、入力検証、簡易認証ロジック、コードの整理といったプログラミングの基礎を学ぶことにあり、教育用途や入門者のハンズオンに適しています。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 3
  • ファイル数: 3
  • メインの言語: Python

主な特徴

  • ユーザー情報入力と基本的なバリデーション(氏名、CPF、メール)
  • パスワード保護機能とログイン試行回数の制限(3回でブロック)
  • 入門者向けに条件分岐・ループ・データ検証の練習ができる構成
  • シンプルで読みやすいコード構成(単一スクリプト+README+ライセンス)

技術的なポイント

このプロジェクトは教育向けのため、複雑な外部ライブラリに頼らず標準的なPython構文と基本的なアルゴリズムで構成されています。入力バリデーションではCPFの形式チェックやメールの簡易検証を行っており、ユーザーの入力に対して適切なフィードバックを行うことで堅牢性を高めています(ただし本番運用レベルの完全な妥当性検証や正規表現・チェックディジットの精密処理があるかは実装次第です)。認証部分は「登録済みの正しいパスワード」と比較して一致するかを判定し、カウントを用いたロック機構を採用。試行回数管理はシンプルな整数インクリメントで実現しており、3回の失敗でアクセスを終了するフローになっています。

コード構成がシンプルなため、条件分岐(if/else)、ループ(while/for)、関数化(入力検証用関数)、例外処理の導入ポイントなど学習素材としての価値が高いです。改善点としては、パスワードのプレーン保存を避けるためのハッシュ化(bcryptやhashlibの使用)、メールやCPFの正規表現による厳格な検証、タイムベースやカウンターリセットの導入、ログ出力と監査用メッセージの追加などが考えられます。また、実運用を想定する場合はデータベースによるユーザー管理、入力のサニタイズ、SQLインジェクション対策、2要素認証の導入などが必要です。教育目的であれば、これら拡張機能を課題として追加実装することで理解が深まります。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file — ライセンス情報(利用条件を確認)
  • README.md: file — プロジェクトの説明、機能一覧、学習ポイントなど
  • Sistemadelogin.py: file — メインのスクリプト。ユーザー入力、CPF/メール検証、パスワード認証、3回失敗でのブロック処理などのロジックを含む

Sistemadelogin.pyは1ファイルに収められたシンプルな実装のため、コードを追いやすく変更や拡張が行いやすい構造です。実装を読み解くことで、どのように入力検証と認証フローが組み立てられるかを学べます。

まとめ

教育用途に適したシンプルなログイン実装。基礎理解と拡張学習の足がかりとして有用です。(約50字)

リポジトリ情報:

READMEの抜粋: Sistema de login desenvolvido em Python, simulando o acesso a um banco governamental com controle de segurança por limite de 3 tentativas de senha.

Projeto focado em prática de:

Estruturas condicionais

Laços de repetição

Validação de dados

Segurança básica de autenticação

Organização de código

🔐 Funcionalidades

✔️ Entrada de nome completo ✔️ Validação de CPF ✔️ Valificação de e-mail ✔️ Sistema de senha protegida ✔️ Bloqueio automático após 3 tentativas incorretas ✔️ Mensagem de acesso a…