0

Stellaris LM3S8962マイクロコントローラーを、インターネットと一連のセンサーの間のブリッジとして使用したいと思います。センサーからマイクロコントローラーへの通信にはZigbeeノードを使用します。lwIP TCP / IPスタック(LM3S8962用)を使用して、コントローラーのフラッシュに保存されているHTMLページにアクセスすることができました。

今、私は同じための安全なログインシステムを追加したいと思います。基本的に必要なのは、ブラウザーにコントローラーのIPを入力すると、ユーザー名とパスワードの入力を求められることです。lwIP TCP / IPスタックを使用して、このシステムを可能な限り安全にしたい。

参考までに、スタックはPHPやその他のスクリプトをサポートしていません。CGI機能(C)はサポートされていますが、セキュリティ部分を実装する方法がわかりません。ご案内ください。

4

1 に答える 1

2

プラットフォームで HTTP 経由のユーザー認証を実装するには、基本的に 2 つの方法があります。

  • 「クラシック」基本 HTTP 認証 (正確な仕様については RFC2616 を参照)、
  • ログインフォーム、セッション ID を作成し、それをブラウザに返し、Cookie または URL に保存します。

Basic HTTP 認証は、Authorization HTTP ヘッダーがあるかどうかを確認するために、Web ページ サービング ルーチンにチェックを挿入することによって機能します。存在する場合は、それをデコードし (RFC を参照)、指定されたユーザー名/パスワードを確認する必要があります。資格情報に問題がない場合は、Web ページの提供に進みます。資格情報が正しくない場合、または Authorization ヘッダーがない場合は、401 エラー コードを返す必要があります。次に、ブラウザーはユーザーに資格情報の入力を求めます。このソリューションはかなり単純で、見栄えの良い HTML ページではなく、ブラウザのログイン ダイアログが表示されます。また、マイクロコントローラーは、ページ要求ごとに資格情報を確認する必要があります。

ログインフォームによる認証は、サーバーが適切に認証されたユーザーセッションのリスト (おそらくメモリ内) を維持し、このリストに対してリクエストをチェックすることによって機能します。ログインすると、そのセッションに対して一意のランダム ID が生成され、セッション データがリストに入力されます。新しいセッション ID をブラウザーに返して、今後の HTTP 要求に含める必要があります。ブラウザーの Cookie に入れるセッション ID を選択するか、URL パラメーター (?id=xxxxx) として URL に埋め込むことができます。URL パラメーターは、新しい URL を使用してブラウザーに 302 リダイレクト応答を送信することによって埋め込まれます。Cookie ソリューションが必要な場合は、Set-Cookie HTTP 応答ヘッダーを使用して、ログイン要求への応答を送信できます。ログイン フォーム ソリューションでは、実際の資格情報 (ユーザー名/パスワード) はログイン時に 1 回だけチェックされます。その後、アクティブなセッションのリストに対してセッション ID のみがチェックされます。セッション ID は、サービスを提供するすべての Web ページの要求から (URL または Cookie HTTP ヘッダーから) 抽出する必要があります。また、セキュリティ対策として、またアクティブなセッションのリストのサイズを制限するために、ある種のセッション タイムアウトを実装する必要があります。

どちらのソリューションでも、ユーザー名/パスワードは一部のリクエスト (基本 HTTP 認証のすべてのリクエスト、およびログイン フォーム ソリューションのログイン ページ POST) で移動し、ネットワーク トラフィックから抽出できます。また、セッションをハイジャックするために必要な情報は、両方のソリューションのすべてのリクエストに含まれています。これが問題になる場合 (システムが自由にアクセスできる LAN セグメント上で動作するか、制御できないネットワーク リンクを介して動作する場合)、これらの機密データを隠すために SSL が必要になるでしょう。プラットフォームに適切な SSL 実装を取得する方法は、別の問題です。

于 2013-09-05T19:28:20.290 に答える