PHP による APP インターフェイス作成のセキュリティ関連の問題に関するディスカッション (1)
PHP による APP インターフェイス作成のセキュリティ問題に関する議論 (1)
この問題について議論する前に、インターネット コード作成者として、フロントエンドであるかバックエンドであるかにかかわらず、次のことを確認してください。 http リクエストをある程度理解し、http の特性を理解し、http におけるリクエストとレスポンスが何であるかを明確に理解し、Web サイトに Cookie、セッション、確認コードが存在する理由とその必要性を理解しなければなりません。 APP インターフェイスのセキュリティについて説明することは、HTTP リクエストのセキュリティについて説明することになるためです。
私は通常、APP インターフェイスを通常のインターフェイス、フォーム インターフェイス、メンバー インターフェイスの 3 つのカテゴリに分類します。この記事では次のことに焦点を当てます。ディスカッション メンバーインターフェース
共通インターフェース
は、収集や暴力的なクエリを防ぐために、通常、ニュースリスト GET http://Example.com/index.php?module=news&action=list
の取得などの GET リクエストです。次の処理:
- このサイトが他のサイトから file_get_contents にされないようにするため、user_agent を識別する必要があります。ブラウザ経由でアクセスしない場合は、直接表示されません。
- user_agent を偽造して他の人が訪問した場合、1 分以上前に別の IP があった場合、クローラーは単位時間あたりの IP 訪問数によって制御されます。その後、処理する訪問回数。 ただし、特定のコミュニティや企業が特定のIPの外部ネットワークを利用する事態が発生すると行き詰まってしまいますので、ブラウザのCookieと連携して対応する必要があります
要約: リクエストヘッダーは偽造でき、IP アドレスは変更でき、Cookie はクリアできます。たとえば、この問題を PC 側で防ぐことは基本的に困難です。タオバオや点評 などの大手サイトからのデータ。
APP はこの問題をどのように処理しますか? Dianping APP の http 要求パッケージを取得して確認してみましょう:
<code>GET http://114.80.165.113/mapi/ugcuserfeeds.bin?filtertype=5&userid=129059048&token=73114c7e9a4485319542039cdff854d989f61e5821d306b3abf0fc9904eb51ff&start=0 HTTP/1.1Host: 114.80.165.113Accept: */*pragma-appid: 351091731pragma-newtoken: c2032338f6abf96c8e2984db1655f2bac73b88f799e49aab4a426d414f994b5fpragma-token: 73114c7e9a4485319542039cdff854d989f61e5821d306b3abf0fc9904eb51ffpragma-dpid: 9214560561001942797pragma-device: 566fe5aeb75a827967fbad8356608134ba98a4a6Proxy-Connection: keep-alivepragma-os: MApi 1.1 (dpscope 7.5.0 appstore; iPhone 8.3 iPhone7,1; a0d0)Accept-Language: zh-cnnetwork-type: wifiUser-Agent: MApi 1.1 (dpscope 7.5.0 appstore; iPhone 8.3 iPhone7,1; a0d0) Paros/3.2.13 </code>
http://114.80.165.113/mapi/ugcuserfeeds.bin?filtertype=5&userid=129059048&token=73114c7e9a4485319542039cdff854d989f61e5821d306b3abf0fc9904eb51ff&start=0
に直接アクセスすると、サーバー側から直接ブロックし、450 エラーを返します。
PHP のサーバーは通常、クライアント開発者との合意に従って、構成項目でいくつかのカスタマイズされたリクエストを使用することもできます。上記の parama-* などのヘッダー情報は、サーバー設定項目でこれらのカスタマイズされたリクエスト ヘッダー情報を取得し、それが合意されたリクエスト情報であるかどうかに応じて 450 に書き換えることができます。パケットをキャプチャしてすべてのリクエスト ヘッダー情報を取得すると、リクエスト ヘッダー情報を完全にシミュレートしてデータを取得できます。
多くのアプリはこのステップで API インターフェイスを取得できます。これは処理が非常に簡単な json 形式であり、Dianping APP は圧縮されたように見える大量の文字化けしたデータを直接返します:
これは PC 側と多少似ています。 gzip、サーバー クライアントは gzip 圧縮データを返し、ブラウザは gzip を解凍して実際のデータを取得し、それを表示します。 レビュー内の文字化けしたデータもこの原則に基づいているのかどうかはわかりません。解凍アルゴリズムがアプリ自体で実行されるため、データのセキュリティが確保されるだけでなく、帯域幅が節約され、データ送信が高速化されるため、これは本当に「素晴らしい」と言わざるを得ません。これがどのように行われるかはまだ不明です。
フォーム インターフェイス
は、主にデータをサーバーに送信する HTML の from フォームに似ています。一般に、これはポスト http リクエストです。主な危険は、HTTP リクエストの強制とデータベースのバーストです。PC 側では、通常、検証コードによってこの問題を解決しますが、APP 側では、これが唯一考えられます。検証コードを渡す方法は、PC 側が検証コードをセッションに保存し、APP 側がキャッシュに保存するだけですが、検証コードが追加されると、ユーザー エクスペリエンスが大きく損なわれることは間違いありません。これを解決するためのより良い方法はまだ不明です。
メンバー インターフェイス
いわゆるメンバー インターフェイスは、
と同様のリクエストであり、サーバーに直接送信されます。 user_id に基づいて対応するメンバーシップ操作を実行しますが、これは現在のメンバーシップシステム全体を公開することに等しい非常に危険なインターフェイス処理です。相手が user_id を変更する限り、すべてのメンバーに対応するインターフェイスを操作できます。通常、PC 側では暗号化された Cookie を使用してメンバーを識別し、セッションを維持します。ただし、Cookie はブラウザのローカル ストレージ機能に属します。 APP 側は使用できないため、トークン パラメーターを通じてメンバーを識別する必要があります。また、このトークンをどのように処理するか? http://Example.com/index.php?module=users&action=info&user_id=333
まず最初に、このインターフェイスを暗号化する前に行った 4 つの解決策について話しましょう:
APP 開発者 md5 と特定の合意に同意する ただし、APP プログラムが逆コンパイルされると、特に Android APP では、これらの合意されたアルゴリズムが公開されてしまいます。このアルゴリズムを使用すると、インターフェイスのリクエストをシミュレートして検証に合格することが完全に可能です。
オプション 2
データベース メンバーシップ テーブルのパスワードは、ランダム暗号化と二重暗号化を備えた md5 値であり、ユーザーがログインすると、メンバーの対応する uid とパスワード、パスワードが返されます。これは平文ですが、他の人がそれを知っていればログインできません。結局のところ、インターフェース user_id=333&token=aa37e10c7137ac849eab8a2d5020568f
をリクエストするたびに、主キー uid を通じて現在の uid に対応するトークンをすぐに見つけることができます。
しかし、この考えはあまりにも単純すぎます。パケットをキャプチャした人は、一度トークンを知ってしまえば、パスワードを変更しない限り、メンバーにログインできません。常にトークンを使用してメンバーの関連情報を操作できます。インターフェイス;
オプション 3
は、uid 网站公钥
で時間に敏感な暗号化を実行する対称暗号化アルゴリズムを使用します。一定の制限時間内に。メンバーがログインに成功すると、サーバーは ID を暗号化してクライアントに返し、クライアントはインターフェイスを要求するたびにこのパラメーターを渡し、サーバーは復号化によって認証します。
ただし、これも安全ではありません。なぜなら、外部から身を守るためには、内部から身を守ることはできないからです。今回のCtripの停止は、退職した内部職員の悪質な操作によるものだと聞きました。内部の悪意のある担当者が対応するアルゴリズム ルールを知っている場合、データベース権限を持たない場合でも、メンバーがログインするときに
オプション 4
リクエストを介して関連するメンバーを操作できます。インターフェイスにログインすると、サーバーはトークンをクライアントに返します。トークンを生成するルールは 网站公钥 当前uid 当前时间戳 一段随机数
です。必要に応じて、トークンをキャッシュに入れて一定期間待機するかどうかを決定します。自動的に期限切れになるまでの時間をデータベースに保存するか (データベースに保存する場合は、ユーザーのログイン時間とログアウト時間を記録する別のテーブルを作成します)、ユーザーがログアウトするときに変更して、トークンが確実に有効になるようにします。ユーザーが手動でログアウトしてからログインするまでの間のみ使用できます。
セキュリティを確保するには、一定期間内にユーザーが自動的にログアウトできるようにする必要があります。このソリューションを Linux とデータベースの権限管理と組み合わせると、外部と内部の両方の保護を防ぐことができます。
開発上の注意事項他のインターフェイスの
- JSON はクロスプラットフォームのパフォーマンスが優れているため、JSON 形式のデータを使用するのが最善です。 JSON を生成するときは、オブジェクト (ディクショナリ) と配列という 2 つの json 形式に注意する必要があります。モバイル開発言語の PHP には同様の foreach がありませんが、オブジェクトに対する操作のみが可能です。通常はキー名を使用してキー値を取得します。
- 成功か失敗か。インターフェイスは明確なデータ ステータス情報を提供する必要があり、NULL を返すことはできません。NULL が返されると、IOS 側でクラッシュします。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









京東モールAPPで実名認証を取得するにはどうすればよいですか?京東モールは多くの友人がよく利用するオンライン ショッピング プラットフォームですが、充実したサービスを享受し、より良いショッピング体験を得るために、買い物をする前に全員が実名認証を行うことが最善です。以下はJD.comの実名認証方法です。ネチズンの参考になれば幸いです。 1. JD.com をインストールして開き、個人アカウントにログインします。 2. 次に、ページの下部にある [マイ] をクリックして、個人センター ページに入ります。 3. 次に、ページ内の小さな [設定] アイコンをクリックします。右上隅をクリックして設定機能インターフェイスに移動します; 4. [アカウントとセキュリティ] を選択してアカウント設定ページに移動します; 5. 最後に、[実名認証] オプションをクリックして実名情報を入力します; 6. . インストール システムでは、実際の個人情報を入力し、実名認証を完了する必要があります。

Appleの製品とサービスは、常に世界中のユーザーに愛され続けています。香港 Apple ID を登録すると、ユーザーはさらに便利になり、特典が得られます。香港 Apple ID の登録手順と注意点を見てみましょう。香港 Apple ID の登録方法 Apple デバイスを使用する場合、多くのアプリケーションや機能では、Apple ID を使用してログインする必要があります。香港からアプリケーションをダウンロードしたり、香港 AppStore の優待コンテンツを楽しみたい場合は、香港の Apple ID を登録することが非常に必要です。この記事では香港のApple IDの登録手順と注意点を詳しく解説します。手順: 言語と地域を選択します。Apple デバイスで「設定」オプションを見つけて、次のように入力します。

チャイナユニコムアプリはみんなのニーズを簡単に満たします。ニーズを解決するためのさまざまな機能があります。さまざまなサービスを処理したい場合は、ここで簡単に行うことができます。必要がない場合は、ここで時間内に購読を解除できます。携帯電話を利用していると、データ容量が足りないと感じて追加でデータパックを購入したものの、翌月には必要ないのですぐに退会したいという方も多いのではないでしょうか。必要な友達が来て利用できるように、退会方法を提供しています。 China Unicom アプリで、右下隅にある「My」オプションを見つけてクリックします。 「My」インターフェースで「My Services」列をスライドし、「注文しました」オプションをクリックします。

HTTP 301 ステータス コードの意味を理解する: Web ページ リダイレクトの一般的なアプリケーション シナリオ インターネットの急速な発展に伴い、Web ページの操作に対する人々の要求はますます高くなっています。 Web デザインの分野では、Web ページのリダイレクトは一般的かつ重要なテクノロジであり、HTTP 301 ステータス コードによって実装されます。この記事では、HTTP 301 ステータス コードの意味と、Web ページ リダイレクトにおける一般的なアプリケーション シナリオについて説明します。 HTTP301 ステータス コードは、永続的なリダイレクト (PermanentRedirect) を指します。サーバーがクライアントのメッセージを受信すると、

請求書は買い物券として、私たちの日常生活や仕事に欠かせないものです。では、普段買い物に Duodian アプリを使用する場合、Duodian アプリで簡単に請求書を発行するにはどうすればよいでしょうか?以下では、この Web サイトの編集者が、マルチポイント アプリで請求書を開くための詳細なステップバイステップ ガイドを提供します。さらに詳しく知りたいユーザーは、必ずお見逃しなく。テキストに従って詳細を確認してください。 [請求書センター]の[マルチポイントスーパー/フリーショッピング]をクリックし、注文完了ページで請求書が必要な注文を選択し、[次へ]をクリックして[請求書情報]、[受取人情報]を入力し、[クリック]をクリックします。正しいことを確認して送信し、数分後に受信メールボックスに入り、メールを開き、電子請求書のダウンロードアドレスをクリックし、最後に電子請求書をダウンロードして印刷します。

Blackmagic Design は、好評を博した Blackmagic Camera アプリをついに Android に導入しました。プロ仕様のビデオ カメラ アプリは無料でダウンロードでき、完全な手動制御が可能です。これらのコントロールは、プロレベルの cin を簡単に摂取できるようにすることを目的としています。

アプリで個人所得税を申告するにはどうすればよいですか?個人所得税は非常に実用的なモバイル ソフトウェアで、ユーザーはこのソフトウェア上で一部の事業を申告したり、税金の還付を行ったりすることができます。このソフトウェアをダウンロードしておけば、オフラインで行列に並ぶ必要がなく、大変便利です。多くのユーザーはまだ個人所得税ソフトウェアを使用して申告を行う方法を知りませんが、次の編集者は参考のために個人所得税ソフトウェアの申告方法をまとめています。個人所得税アプリの申告方法 1. まず、ソフトウェアを開き、ホームページで「申告したい」ボタンを見つけてクリックします; 2. 次に、ここの申告書の中にある「年間包括所得の概要」を見つけてクリックします。

WindowsAppRuntime または WinRT は、Microsoft が作成したツールボックスのようなものです。開発者がコンピューター、タブレット、携帯電話、Xbox などの多くのデバイスでアプリケーションを構築して実行するのに役立ちます。アプリケーションの実行中に、このアプリケーションには WindowsAppRuntime が必要であるというエラー メッセージが表示された場合は、この投稿に従って問題を解決してください。このエラーはなぜ発生するのでしょうか? Windows アプリ ランタイムは、開発者がコンピューター、タブレット、電話、Xbox、HoloLens などのさまざまなデバイス上でアプリケーションを構築して実行するのに役立つ強力なツールです。 WindowsAppRuntime を実行する必要があるというプロンプトが表示された場合
