Web アプリケーションの継続的な開発に伴い、AJAX (非同期 JavaScript および XML) がますます一般的になってきています。 JSONP (JSON with Padding) は、一般的な AJAX 対話プロトコルです。これにより、さまざまなドメインのサーバーからデータをリクエストできるようになり、JavaScript で一般的に使用されます。
PHP では、別のドメインからの JSONP 形式の入力を検証する必要がある場合、それを正しく解析する必要があります。このプロセスは正規表現を使用して実行できます。この記事では、PHP で正規表現を使用して JSONP 形式の入力を検証する方法を説明します。
JSONP 形式での入力
JSONP 形式を検証する方法について詳しく説明する前に、JSONP 形式での入力について簡単に紹介します。
クライアントが JSONP 形式を使用してデータを取得すると、サーバーにリクエストが送信され、リクエストを受信したサーバーはデータをコールバック関数にラップしてクライアントに送り返します。このようにして、クライアントはコールバック関数を受信したときにデータ処理を実行できます。
たとえば、クライアントがサーバーに JSONP 経由で「client」という名前のユーザー データを取得するようリクエストすると、次のコードのようなリクエストが送信されます。
https://example.com/user.php?callback=client
サーバーは、リクエストに応じた「client」という名前のユーザー データ コールバック関数名 callback は、ユーザー データを関数呼び出しにラップし、対応する JavaScript コードを返します。例:
client({"name":"Tom","age":18,"gender":"male"});
コールバック関数名に不正な文字が含まれているか、形式が正しくない場合、データは正しく処理されません。したがって、コールバック関数名はサーバー側で検証する必要があります。
正規表現を使用して JSONP 形式の入力を検証する
以下では、正規表現を使用して JSONP 形式の入力を検証する方法を例を使用して説明します。
最初のステップは、コールバック関数名を取得することです。リクエストされた URL からコールバック値を取得する必要があります。 PHP では、$_GET を通じて URL パラメータを取得できます。
$callback = isset($_GET['callback']) ? $_GET['callback'] : '';
2 番目のステップは、コールバック関数の名前を確認することです。許可された文字のみが含まれていることを確認する必要があります。 JSONP では、コールバック関数名に使用できるのは英数字とアンダースコアのみです。正規表現を使用して検証できます。
if (preg_match('/^[a-zA-Z0-9_]+$/', $callback)) { // 正确格式的回调函数名称 } else { // 非法的回调函数名称 }
上記の正規表現は次のように解釈できます:
この正規表現は、英数字とアンダースコアを含むコールバック関数名のみに一致し、他の文字は無視されます。コールバック関数名に他の文字が含まれている場合、検証は失敗します。
結論
PHP では、正規表現を使用して JSONP 形式の入力を検証するのは非常に簡単です。必要なのは、コールバック関数名を取得し、正規表現を使用して検証することだけです。これにより、サーバーがリクエストを受信したときに、JSONP 形式の入力の処理に問題が発生しないことが保証されます。
ただし、正規表現ではデータのセキュリティを完全に保証できるわけではないことに注意してください。したがって、入力データを処理するときは、入力長、SQL インジェクション、XSS 攻撃など、他のセキュリティ チェックも実行する必要があります。
以上がPHP で正規表現を使用して JSONP 形式の入力を検証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。