AjaxでURLにアクセスして読み取りと書き込みを行う解決策
序文
「Read and Burn」とは、メッセージが相手に読まれると、メッセージの内容が痕跡を残さずに自動的に削除または破棄される通信方法です。この方法は通常、情報のセキュリティとプライバシー保護を向上させるために使用されます。
従来の通信アプリケーションでは、フラッシュおよび書き込み機能は次の方法で実現できます。
- 自動削除:メッセージは相手が読んだ後、トーク履歴から自動的に削除され、双方とも閲覧できなくなります。
- 自動破棄:メッセージが相手に読まれた後、一定期間後に自動的に破棄され、メッセージが長期間残らないようにします。
- メッセージのスクリーンショットのリマインダー: 相手がメッセージを読むためにスクリーンショットを撮ると、相手がこっそりメッセージを保存するのを防ぐために送信者に通知が送信されます。
Ajaxの標準的な使い方
このメソッドを使用して AJAX リクエストを行うことは、 jQuery における$.ajax()
一般的かつ標準的な使用法です。$.ajax()
基本的な使い方は次のとおりです。
$.ajax({
url: '请求的URL',
method: '请求的方法', // 默认为 'GET'
data: 请求的数据, // 可选
dataType: '预期的响应数据类型', // 可选
success: function(response) {
// 请求成功时的回调函数
// 可以在这里处理响应数据
},
error: function(xhr, status, error) {
// 请求失败时的回调函数
// 可以在这里处理错误信息
}
});
その中で、主要な構成項目には次のものがあります。
url
: 要求された URL アドレス。method
: リクエスト メソッド。 、 、 などを指定できます'GET'
。'POST'
デフォルト'PUT'
は'DELETE'
です'GET'
。data
: 要求されたデータ。オブジェクト、文字列、または配列にすることができます。リクエストに応じて設定します。dataType
: 予期される応答データ型。一般的なものは'json'
、などで、デフォルトはインテリジェント判断です。'text'
'html'
success
: リクエストが成功したときのコールバック関数。サーバーが成功した応答を返したときに呼び出されます。応答データはパラメータとしてコールバック関数に渡されます。error
: リクエスト失敗時のコールバック関数。リクエストでエラーが発生した場合に呼び出されます。エラー情報はパラメータとしてコールバック関数に渡されます。
これらのオプションを構成することで、リクエストのターゲット URL、リクエスト メソッド、送信するデータを定義し、リクエストが成功または失敗したときに対応する処理ロジックを実行できます。
簡単な例を次に示します。
$.ajax({
url: 'https://api.example.com/data',
method: 'GET',
success: function(response) {
console.log('请求成功', response);
},
error: function(xhr, status, error) {
console.log('请求失败', error);
}
});
この例では、GET リクエストをコンソールに送信し'https://api.example.com/data'
、成功または失敗をコンソールに出力します。上記は$.ajax()
メソッドの簡単な使用方法ですが、実際のニーズに応じて、リクエスト ヘッダーやタイムアウト設定などの他のオプションを構成することもできます。より詳細な情報とより複雑な使用法については、jQuery の公式ドキュメントを参照してください。
プロジェクトの要件
API アクセスを検証するにはさまざまな方法がありますが、この場合は、単純な動的 URL パラメーター関数を実装する必要があります。つまり、各訪問者は異なる URL にアクセスしますが、クローラーの機能を回避しながら同じリソースにアクセスできます。
1.URLアクセス暗号化
AuthCode カプセル化関数は Discuz の古典的な関数であり、次のような変更された関数が採用されています。
- 渡された ID に対してフロントエンド暗号化が実行され、通常、訪問者がそれを解読することはできません。
- 動的暗号化。ページが更新されるたびに、暗号文が自動的に変更されます。
- $expiry を設定します: 暗号文の有効期間 (3 秒など)。
var id = "<?php echo AuthCode('1', 'ENCODE', 'ILOVEYOU', 3)?>";
$("#pid").html(id);
$(function () {
$.ajax({
type: 'get',
url: "api.php?id=" + id,
data: {
},
dataType: "json",
success: function (res) {
console.log(res);
},
error: function (err) {
console.log(err)
}
});
})
2. バックエンド API の復号化
暗号文の有効期限が切れると、再度復号化することはできません。したがって、ここでエラーを発生させて例外プロンプトをスローバックするだけで十分です。
require_once "common.php";
$id = $_GET['id'];
$pid = AuthCode($id, 'DECODE', 'LOCKDATAV', 0);
$res['data']['id'] = $id;
if ($pid == "") {
$res['data']['msg'] = 'ID已过期,无法正常读取数据,请刷新页面。';
} else {
$res['data']['pid'] = $pid;
$res['data']['msg'] = "OK";
}
die(json_encode($res));
APIアクセス検証方法
API アクセス認証は、許可されたユーザーまたはアプリケーションのみが API にアクセスできるようにするための重要なセキュリティ メカニズムの 1 つです。一般的な API アクセス検証方法のいくつかを次に示します。
-
API キー (API キー): 各ユーザーまたはアプリケーションに一意の API キーを割り当て、ユーザーの ID と権限を確認します。API キーは通常、リクエストのパラメータとして、またはリクエスト ヘッダーで送信されます。
-
OAuth (オープン認証): Oauth は、ユーザーに代わって保護されたリソースにアクセスするサードパーティ アプリケーションを認証するために使用される認証フレームワークです。OAuth プロセスでは、API リソースへのアクセスと保護に認可トークン (アクセス トークン) が使用されます。
-
JSON Web トークン (JWT): JWT は、ユーザーとサービス間の認証と認可に使用される安全なトークンです。これには、ユーザーを認証するためのクレームと権限情報、およびその完全性を検証するための署名が含まれています。
-
HTTP 基本認証: HTTP 基本認証は、Base64 でエンコードされたユーザー名とパスワードを要求ヘッダーで送信することによってユーザーを認証します。簡易な認証方式ではありますが、送信中にリクエストヘッダが盗聴される可能性があるため、セキュリティはそれほど強くありません。
-
HMAC (ハッシュ メッセージ認証コード): HMAC は、秘密キーを使用してメッセージに署名する方法です。API リクエストでは、キーを使用してハッシュを生成し、それを認証のためにサーバーに送信します。
-
IP アドレス ホワイトリスト: API アクセス用の IP アドレスを制限し、特定の IP アドレスのみが検証に合格することを許可します。このアプローチは、特定のクライアントまたはサーバーのみが API へのアクセスを許可されている場合に役立ちます。
上記の認証方法を総合的に利用することで、API のセキュリティを強化できます。一般に、API 認証方法は、特定のニーズとセキュリティ要件に基づいて選択および実装する必要があります。
暗号化と復号化関連
- PHP動的パスワードと暗号化および復号化機能の使用(動的パスワード、Discuzコア関数AuthCode、任意の入力パスワード検証)
- PHPにURLパラメータの暗号化検証を渡すためのソリューション(暗号化復号化、セキュリティ検証フィルタリング)
@時々漏れます