ホームページ  >  記事  >  バックエンド開発  >  JavaScript - Ajax API でセキュリティ検証を行うにはどうすればよいですか?

JavaScript - Ajax API でセキュリティ検証を行うにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-08-08 09:06:481545ブラウズ

Web で、Ajax を使用して API を呼び出すとき、他の Web サイトが API を呼び出さないようにセキュリティ検証を行うにはどうすればよいですか?

APP呼び出しの場合、インターフェースのセキュリティ問題を解決するにはどうすればよいですか?また、API がパブリック ネットワークに公開されないようにするにはどうすればよいでしょうか? APP を呼び出すことができる限り、それは公共のインターネットに公開されているとみなされませんか?

返信内容:

Web で、Ajax を使用して API を呼び出すとき、他の Web サイトが API を呼び出さないようにセキュリティ検証を行うにはどうすればよいですか?

APP呼び出しの場合、インターフェースのセキュリティ問題を解決するにはどうすればよいですか?また、API がパブリック ネットワークに公開されないようにするにはどうすればよいでしょうか? APP を呼び出すことができる限り、それは公共のインターネットに公開されているとみなされませんか?

Ajax はドメイン間で問題を解決できません。クロスドメイン シミュレーション リクエストはサーバー経由で送信され、Ajax データを取得できます

2 つの方法がありますが、基本的には似ています。1 つはリクエスト ヘッダーで、もう 1 つは入力トークンをページに追加することです。ただし、これら 2 つの方法の主な問題は、トークン = md5(IP. + 乱数 + タイムスタンプ + UID + session_secret) 実際には、主に暗号化を行うだけでコンテンツを定義できます

暗号化されたコンテンツをセッションに追加し、セッションの有効期限を設定します

1.ヘッダーをリクエストしたい場合

access_tokenリクエストヘッダーを追加し、バックグラウンドでリクエストヘッダーの内容を取得し、セッション内の値と比較してみると、問題がないことが証明され、セッションが無効になります。 。

2. リクエストヘッダーと似ていますが、Ajax を送信するときに、暗号化された値が取得され、パラメーターに配置されます。

あなたの質問にアプリで答えてください

アプリにアクセスするには、パブリックネットワーク上にある必要があります。現在のセキュリティソリューションはパラメータ暗号化です

たとえば、a=1&n=2を送信したい場合

その後、実際に送信するときにパラメータを暗号化する必要があります、mid=xxx&a=1&b=2&sign=md5('mid=xxx&a=1&b=2'+key)

mid はクライアントがインターフェースを呼び出すためのアカウントを表し、そのアカウントはキーに対応します

サーバーは、送信されたパラメータが正しいかどうかを毎回確認する必要があります。これは最後の符号パラメータです

もう 1 つの重要な点は、クライアントがネイティブ APP の場合、逆コンパイルを防ぐためにコードを難読化および暗号化する必要があるということです。そして、このキーは定期的に変更され、バージョンが更新されるとキーも変更されます

もう 1 つの方法は、パラメーターを送信する前に、送信されるすべてのパラメーターの暗号化されたアドレスをリクエストすることです。このアドレスは、パラメーターに基づいて暗号化されたトークンを返します。このトークンを取得し、実際のパラメーターを送信すると、バックエンドがそれを実行します。確認してください

この方法の欠点は、ネットワーク リクエストが 1 つ必要になることです。これはハイブリッド アプリケーションにのみ適しています

これらは他のブログを読んで学んだものですが、淘宝網やJD.comなどのアプリのインターフェイスがどのように処理されるのかわかりません

サーバーに追加の設定がない場合、Ajax はドメインを越えて API を呼び出すことができません。また、要求されたドメイン名を取得して判断することもできます。

承認したウェブサイトへのアクセスを許可するには

リクエストヘッダーに Access-Token を追加できます


それがインターフェイスの性質を持つ API 呼び出しである場合は、公共のインターネットに公開すべきではありません。フロントエンド JS に使用される ajax である場合は、ユーザーがログイン後にのみ呼び出しできるようにする必要があります。セッションを検証することを意味します。

内にあります (

など) リーリー

または ajax请求头里加上token をテンプレートの基本クラスに追加します リーリー

有効な値はログイン API から返されます。これはアプリケーションによって設計される必要があります (ID を検証する場合はトークンを使用します)。サーバーはトークンを使用してユーザーを識別します。

に似ています。oauth2.0 を参照してくださいtoken

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。