nodejsを使用して画像アップロードサービスを作成しています。有料のクライアントは、サーバーに設定したエンドポイントに画像ファイルを送信できます。ただし、すべてのリクエストが届いたら、それが実際にリクエストを行っている有料クライアントであることを確認する必要があります。クライアントにドメイン名を教えてもらおうと思ったので、リファラーヘッダーを確認しました。ただし、誰かがリファラーヘッダーを簡単に偽装して、料金を支払わずに私のサービスを使用する可能性があります。SaaS開発者はこの技術的な問題にどのように直面しますか?クライアントにサーバー側のコードを要求せずにこれを修正することは可能ですか?
2 に答える
あなたはウェブサイトのための外部画像ホスティングサービスを構築していますか、それともプライベートで安全でなければならない何かを共有するためですか?前者の場合は先読みしてください。
もちろん、ヘッダーはなりすましにすることができます。これがあなたがそれについて心配するべきではない理由です:
代替案は醜いです。安全なプロビジョニングサービスを構築するには、Webサイトの所有者が自分の側でも実装するある種のトークンシステムを開発する必要があります。より単純な代替手段が利用可能であるため、彼はあなたにサインアップしない可能性があります。
なりすましはクライアント側で行う必要があります。実際にこれを行う「ユーザー」はごくわずかです。2人のオタクが自分のマシンでヘッダーをスプーフィングしても、大きな違いはありません。これを自動的に実行するプロキシまたはミドルウェアを作成し、多くの人がそれを使い始めた場合、問題になる可能性があります。ただし、これはあまりありそうにありません。
あなたはすでに知っていると思いますが、あなたが言及していないので-それはと呼ばれHotlinking
ます。このトピックをグーグルで検索して、より多くのリソースを見つけてください。
リファラーヘッダーを使用してブラウザーを認証することはできません。
個人を認証する場合は、(username / pwd)に資格情報を提供するログインシステムが必要になる可能性があり、許可されたユーザーベースに対してそれらをチェックします。合格した場合は、ブラウザに特定の種類のCookieを設定して、正当なユーザーであることを示します。このユーザーからの後続のリクエストには、すべてのリクエストで確認できるCookieが含まれます。
Cookieは、簡単に推測したり偽造したりできないことを確認できるように作成したものである必要があります(セッションやサーバーからの暗号化されたトークンなど)。通常、ユーザーが再度ログインする必要があるように、一定期間後にCookieに有効期限を設定します。