2011-08-17 1 views
2

私はFirefoxのアドオンに取り組んでいます。アドオンの一箇所で、サーバーに接続してURLを渡す必要があります。サーバーはURLを処理します(迅速で簡単な処理ではありません)。結果のファイルへのリンクを返送します(Amazon S3 )。しかし、Firefoxのアドオンは本質的にオープンソースなので、悪意のある人がサーバを見つけて悪用するのを防ぐにはどうすればいいですか? (私は自分のアドオンのユーザがサーバにその電話をかけることができるようにしたい...)Firefoxアドオンクライアント/サーバーセキュリティ

Firefoxのアドオンはすべて公開されているので、何らかのキーを使うことを考えていましたが、本当にうまくいかないソース。私はバイナリコンポーネントの作成についても考えていましたが、C++での経験はほとんどありませんでした(しかし、私はこのような簡単なことを学ぶことができました)が、バイナリコンポーネントへの呼び出しをどのように保護できますか?また、どのように私はネットワークスニファなどから守ることができますか?何らかの理由でバイナリコンポーネントに何らかの暗号化を含めることができるので、ネットワークスニファは何がサーバに送信されているかを検出できません。 (私はこの質問を見つけました:Client-Server security and authenticationですが、それは私の頭の上に少しありました)

+0

付属の質問を振り返ってみると、ユーザー名/パスワードの認証がオプションになる可能性がありますが、... a)どうやってスパムのない人からこれを守ることができましたか? b)どのように私はユーザー名/パスワードを提出し、認証を含めることができますか? (私はおそらくそれを理解することができます... httpsはあまりにもハードではない) – Jakey

+0

あなたは質問を編集することができます。 –

+0

あなたがリンクしている質問にも本当の回答はありません。 –

答えて

1

あなたは基本的に人に車のキーを与えているので、車に乗って楽しむのを止めるのは難しいです。最も安全なソリューションは、バイナリコンポーネントを使用し、ユーザー名/パスワードまたはPKI証明書で接続を認証することです。 HTTPSを使用すると、接続は暗号化されます。これは完全に安全ではありません(バイナリコンポーネントは、決定されたハッカーによってリバースエンジニアリングされる可能性があります)が、カジュアル攻撃を確実に抑止します。ただし、バイナリコンポーネントの実装、構築、およびメンテナンスはJavaScript同等のものよりもはるかに難しいことに注意してください。

別の方法として、ユーザーがエクステンションをインストールするときにワンタイム登録プロセスを実行する方法があります。これはバックグラウンドでも起こる可能性があり、ユーザは、後でサーバとの通信に使用するクレデンシャル(例えば、PKI鍵ペア)を最終的に得ることになる。あなたがサーバーを過度に使用している人がいると心配しているなら、おそらくエクステンション経由でそうするのは偉大ではないでしょう。この方法で、各ユーザーの使用状況を(拡張機能を介して)追跡し、必要に応じて制限することができます。

1

最後に私はあなたができることはたくさんあるとは思わない。アドオンにバイナリライブラリを持ち、js-ctypes経由で呼び出すことができます(バイナリXPCOMコンポーネントよりも実装して管理する方が簡単です)。しかし、何もあなたのエクステンションを取ったり、JavaScriptロジックを好きなように変更したりすることはありません。

  • クライアントからサーバーへのクライアント:「拡張バージョン1.2.3は要求したいです。」このようなロジックを使用すると、より難しくできます。
  • サーバからクライアントへ:「あなたのchrome:// ...ファイルを取って、MからNまで、どのSHA1チェックサムを入手しますか?」
  • クライアントからサーバーへ:「SHA1チェックサムは...、URLを処理してください...」

しかし、これもすべて誤りではありませんが、あなたのサービスをやや難しくするだけです。自動登録の場合も同じです。あなたの内線番号が登録できる場合、攻撃者はアカウントを作成することもできます。