2016-07-02 2 views
2

webapi2に新しく、私はサードパーティのWebサービスからいくつかのデータをロック解除する簡単なWebApi2プロジェクトを実装しました。資格情報付き)Asp.net WebApi2 - スクラップを避け、ブラウザからの直接アクセスを避け、ドメインからのajaxコールのみを許可する

これはうまくいきますが、私たちのwebapiからコンテンツをこすりすることを避ける方法を探しています。それは機密データではありませんが、競合他社にとって有益です。

私たちはログインすることはできませんが、誰かがウェブサービスからコンテンツをスクラップするのをより困難にする方法を探しています。データは私たちのウェブサイトから自由に入手できるので、私はそれを100%安全にすることはできないと理解していますが、それをもっと難しくするためにできることがなければなりません(そして、人々が以前に対抗した問題のように見えます。いくつかの明確な情報)

IveはCORSを調べましたが、他のドメインからの要求を許可しています。

バックエンドに秘密鍵を使用し、datettimeとヘッダー情報をハッシュして、javascriptでそれをajax呼び出しに追加し、トークンが有効であるかどうかwebapiメソッドをチェックしますか?

編集

トークンauthenticiationと虐待を停止する簡単な(ときれい)な方法があると思われるdoesnの `tので、私は、IPスロットルで行くことにしました。理想的ではないが、それは役立ちます:

私はこのライブラリを使用し、それがうまく機能: https://github.com/stefanprodan/WebApiThrottle

+0

"これはうまくいきますが、私たちwebapiのコンテンツを傷つけるのを避ける方法を探しています。それは機密データではありませんが、競合他社にとって有益なことです。すべての出力がHTMLベースのものであれば、一部のデータをイメージ形式で表示することになりますが、競合他社は何らかの形でOCRを使用してバイパスすることを回避する方法はありません。 – Marco

+0

さて、データを画像形式で提示するのは少し難しくなり、ユーザーエクスペリエンスが損なわれます。 私が避けたいのは、webapiへのリクエストを簡単に自動化する能力です。 たとえば、domain.tld: ドメインでajax経由で次のリクエストが使用されています。tld/api/getcategoriesbyid 私は、より実用的であれば、これを自動的に呼び出してデータを保存する、または独自のアプリケーションでメソッドを使用することを防ぐ(または、もっと難しい)ユーザー/サーバーにしたいと考えています。 – Dossie

+0

ウェブAPIが一般の人々に公開されている場合、これをどのように達成できるのか正直に分かりません。あなたのサードパーティはあなたのWeb APIとの統合を提供していますか? – Marco

答えて

1

アイデアのカップル:

共有キーを。あなたはこれについて言及しましたが、私は彼らにベアラトークンとしてAuthorizationヘッダーにキーを追加させるでしょう。その後、APIはキーを既知の値と単純に比較し、要求を拒否または受け入れることができます。

難読化してください。簡単に自動化されたintを使うのではなく、Guidを使ってこれを防ぐことができます。これにより、あなたのデータセットが更新され、Guidsが実行可能にならないようにする必要があります。

ユーザーエージェントの解析。ユーザーエージェントのヘッダーを見て、それがブラウザや他のユーザーエージェントから許可されていない場合は、要求を拒否します。これは簡単に偽装されますが、確認するのは簡単です。

曖昧さによるセキュリティはセキュリティではないことに注意してください。あなたはこれが安全ではないことを理解していると述べましたが、単純にそれをもっと難しくしたいと思っていました。これらの方法のいずれかがうまくいくと思います。ベアラトークンは、各クライアントに独自のキーを与え、使用状況を追跡できるので、最も安全です。誰がキーを持っているかを制御し、それらを回転させ続けると、トークンルートは実際には安全であると主張することができます。私が言及した他の2つの選択肢は、いかなる手段によっても安全ではありませんが、仕事を完了させるでしょう。

+0

"ユーザーはログインすることはできませんが、ウェブサービスからコンテンツを傷つけるのをより困難にする方法を探しています。あなたはこの部分を正しいものにしましたか? – Marco

+0

返事をありがとう、今は別の解決策を考えています。私の編集をご覧ください。 これを後でいくつかの他の機能を実装するために見るつもりです。 – Dossie

関連する問題