認証メカニズム (Web) を強化するために、試行ごとにユーザーの指紋を記録し、パターン認識を適用して悪意のある試行を識別したいと考えています。たとえば、ユーザーが常にヨーロッパのコンピューターからログインし、中国からの試みがあった場合、ユーザーは中国からのログインを許可することを確認するまで (電子メールなどで) ブロックされます。
私は大学のコースでパターン認識について非常にわずかな知識しか持っていません。しかし、このサービスの開発を開始するのに十分な思い出がありません。私が知っているのは、これらのさまざまな機能を確認する必要があるということです。
- ブラウザ エージェント文字列。結果は次のとおりです。
- オペレーティング·システム
- ブラウザ ベンダー
- IP アドレス。結果は次のとおりです。
- 位置
- ログインのタイムスタンプ
- (失敗した) 試行回数 (セッション内、または合計)
パターンを検索すると、平均的なパターンに従わないため、異常な試みがマークされます。おそらくしきい値を適用するので、ユーザーが夜間にログインしたり、新しい PC を持っていたりしても、それは機能します。
いくつかの要件もあります。まず、アテンプトのチェックをリアルタイムで行う必要があります。資格情報に問題がなくても、後でアクセスが悪意のあるものである可能性があることがわかった場合、2 分後にアクセスをブロックすることはできません。さらに、すべてのアプリは PHP で作成されていますが、PHP はおそらく遅すぎます。その場合、私は Python を使用することを好みますが、その後、Python へのバインディングも必要になります。
問題は、どこから始めればよいかということです。これを達成するための最良のアプローチは何ですか?すべてのデータを Redis のようなキー ストレージまたは Mongo のようなドキュメント ベースに記録できます。特定の機能を備えた新しい試行を、既知の他の試行の大部分に対して検証できるようにするサービスをどのように設計すればよいでしょうか? そして、試行がタイムリーな方法 (たとえば 250 ミリ秒) 内で平均に一致するかどうかを返します。