2012-07-29 7 views
6

nodejsを使用して画像アップロードサービスを作成しています。有料クライアントは、自分のサーバーに設定したエンドポイントに画像ファイルを送信できます。しかし、すべてのリクエストが来たら、それが実際に要求を出している有料クライアントであることを確認する必要があります。私はクライアントが自分のドメイン名を私に与えることを考えていました。しかし、誰かがRefererヘッダーを簡単にスプーフィングし、支払いをせずにサービスを利用することができます。 SaaS開発者はこの技術的な問題にどのように直面しますか?私のクライアントにサーバーサイドコードを持たせることなくこれを修正することは可能ですか?HTTPリクエストでリファラー/リファラーを知る安全な方法は何ですか?

+0

この種のジョブではクライアント側に依存しないでください。 –

+0

[OAuth](http://oauth.net/documentation/getting-started/)はどうですか? – ghoti

答えて

1

参照者ヘッダーでブラウザを認証することはできません。

個人を認証する場合は、(username/pwd)に資格情報を提供するログインシステムが必要になり、許可されたユーザーベースに対して資格情報を確認する必要があります。これらが合格すると、特定のタイプのCookieをブラウザに設定して、それらが正当なユーザーであることを示します。このユーザーからの後続のリクエストには、リクエストごとに確認できるCookieが含まれます。

クッキーは、セッションやサーバーからの暗号化されたトークンなど、簡単に推測や偽造ができないことを確認できるように作成する必要があります。あなたは通常、ある時間後にクッキーの有効期限を設定して、ユーザーが再度ログインする必要があります。

+0

合意。 OAuthと呼ばれる無料のオープンソースフレームワークがあります。これは、あなたのために多くの作業を行います:http://oauth.net。あなたの質問にJavascriptを付けたので、使用できるJavaScriptコードへのリンクは次のとおりです:http://oauth.googlecode.com/svn/code/javascript/ –

2

あなたはウェブサイトのための外部の画像ホスティングサービスを構築するか、それがを確保プライベートとするを持っているものを共有することですされていますか?前者の場合は先読みしてください。

もちろん、ヘッダーはなりすますことができます。あなたはそれを心配べきではない理由はここにあります:

  1. 代替は醜いです:安全なプロビジョニングサービスを構築するには、ウェブサイトの所有者は、同様に彼の最後で実装トークンシステムのいくつかの種類を開発する必要があります。チャンスは、利用できるより簡単な選択肢があるので、彼はあなたにサインアップしないだろう。

  2. クライアント側でなりすましを行う必要があります。実際にこれを行うユーザーはごくわずかです。自分のマシン上の2つのオタクがヘッダーを偽装しても、大きな違いはありません。彼らがこの仕事を自動的に行うプロキシやミドルウェアを書くと多くの人がそれを使い始めると問題になるかもしれません。しかし、これはあまり起こりそうもありません。

ご存知のことですが、言及していないので、Hotlinkingと呼ばれています。 Googleは、このトピックは、より多くのリソースを見つけることができます。