出発点:
テーブル情報Magento
で何をするかをチェックアウトできます。sales_order
表の各行はsales_order
、顧客が発行した個々の注文を表します。管理者には、管理者がこれらの注文を編集できないようにする保護メカニズムがあります。以前の注文をキャンセルして、新しいクローン注文を作成することしかできません (最初の注文を本当に「変更」する必要がある場合)。
テーブル レベルには、 という列がありますprotect_code
。このコードは、注文情報オブジェクト全体の暗号化ハッシュ (md5、sha1、sha2、sha256 などのいずれかのアルゴリズムを使用したhash_hmac ) として生成されます (私は推測しています)。
加害者がアクセスできない安全なキーを使用して注文情報オブジェクトがハッシュされている場合 (たとえば、ハッカーはデータベースにアクセスしたが、PHP コードにはアクセスしていない場合)、注文情報オブジェクトの値を変更することはできません。また、ハッシュを更新する必要があり、同じセキュア キーを使用しないと、同じハッシュを取得できません。
ハッシュを再計算することで、改ざんされた行を認識することができます。
背景情報:
通常、このようなキーは PHP に保存され、ハッシュは支払いフォーム内でユーザーに提示されます。これにより、フォームを支払いゲートウェイ (別の Web サイト) に送信する前に、ユーザーが支払い情報を変更できないようになっています。
PHP アプリケーションと支払いゲートウェイ アプリケーションの両方が暗号化キーを共有します。これは、支払いゲートウェイが受信したデータをハッシュし、(ハッシュを比較して) 改ざんされていないことを確認する必要があるためです。通常、支払いゲートウェイから (専用の) 暗号化キーを受け取ります。
これは、ユーザー/ハッカーがあなたの暗号鍵を知らず、PHP サーバーにアクセスできないことを意味します (つまり、鍵を読み取ることもできません)。
使用するものはすべてアクセス可能です:
ユーザーがアプリケーションサーバーにアクセスできる場合、データベース、ファイルストレージサーバー、支払いサービス、メール送信サービスなど、すべてのサードパーティサービス (保護されているかどうかにかかわらず) にアクセスできることを意味します。ルールは、アプリケーション サーバーが他の自己ホスト型の自己完結型サービスのアグリゲーターに過ぎない場合です。
ユーザーがデータベース サーバーにはアクセスできるが、アプリケーション サーバーにはアクセスできない場合、暗号化キーは安全であり、データは検出されずに改ざんされにくい必要があります (ただし、変更や削除は難しくありません)。
アプリケーションのどこかでごくわずかなデータを使用している場合、ユーザー/ハッカーはアプリケーションサーバーにアクセスできます。つまり、彼 (ハッカー) はそのデータにアクセスできます。ユーザー/ハッカーがアクセスできる場合は、暗号化キーを別のサーバーに保存し、要求によってそれぞれを取得することもできます。アプリがそれらを使用している場合、ハッカーもそれらを使用している可能性があります。