ホームページ > バックエンド開発 > PHPチュートリアル > PHP で Web サービスを作成する際の検証の問題を解決するにはどうすればよいですか?

PHP で Web サービスを作成する際の検証の問題を解決するにはどうすればよいですか?

WBOY
リリース: 2016-06-23 14:09:45
オリジナル
915 人が閲覧しました

いくつかの情報を確認したところ、Web サービスのメソッドを呼び出すたびに顧客確認情報を添付する必要があるようですが、ログインした後は、再度顧客確認情報を提供する必要はありません。セッション中に?


ディスカッションに返信(解決策)

ID をセッション内に保持します

それは Web サービスを提供する側が決定します

それだけではありません!たとえば、基本的な認証を使用してブラウザでアクセスすると、認証ボックスが表示され、認証に合格すると、同じプロセスでアクセス時に再度ボックスが表示されなくなります。また。

私の問題は、curl が Web サービスをリクエストするときに、呼び出しを完了するために毎回検証情報を提供する必要があるように見えることです。 1 回限りの検証ソリューションはありますか?

Cookie をチェックして、HTTP ヘッダーに id のような値があるかどうかを確認します。この値は、リクエストするたびにサーバーに送信する必要があります。

Cookie をチェックして、HTTP ヘッダーに id のような値があるかどうかを確認します。毎回 この値はリクエストごとにサーバーに送信する必要があります

このアイデアはまだ完成していません

あなたはブラウザの検証について話しています

ユーザー: $_SERVER['PHP_AUTH_USER']

パスワード: $_SERVER['PHP_AUTH_PW']

参考:http://php.net/manual/en/features.http-auth.php

function authenticate() {    header('WWW-Authenticate: Basic realm=""');    header('HTTP/1.0 401 Unauthorized');    echo "You must enter a valid login ID and password to access this resource\n";    exit;}if (addslashes($_SERVER['PHP_AUTH_USER'])!= 'adminname' || addslashes($_SERVER['PHP_AUTH_PW'])!= 'adminadmin') {	header('WWW-Authenticate: Basic realm=""');	header('HTTP/1.0 401 Unauthorized');	echo "对不起,无权进入! user=".$_SERVER['PHP_AUTH_USER']."password=".$_SERVER['PHP_AUTH_PW'];  //后面这半句我是为了测试而加上去的;}else{	echo "进入! user=".$_SERVER['PHP_AUTH_USER']."password=".$_SERVER['PHP_AUTH_PW'];  //后面这半句我是为了测试而加上去的;	echo "<p>Welcome: {$_SERVER['PHP_AUTH_USER']}<br />";//   echo "Old: {$_REQUEST['OldAuth']}";//   echo "<form action='' METHOD='post'>\n";//   echo "<input type='hidden' name='SeenBefore' value='1' />\n";//   echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}' />\n";//   echo "<input type='submit' value='Re authenticate' />\n";//   echo "</form></p>\n";	echo date('h:i:s') . "<br />";	//暂停 10 秒	sleep(10);		//重新开始	echo date('h:i:s');	header('WWW-Authenticate: Basic realm=""');	header('HTTP/1.0 401 Unauthorized');        }//可以直接使用试试看是不是你想要的结果
ログイン後にコピー

ブラウザの検証について話しています

ユーザー: $_SERVER['PHP_AUTH_USER']

パスワード: $_SERVER[' PHP_AUTH_PW ']

参考: http://php.net/manual/en/features.http-auth.php


おそらく私が望むものではありません。 2 つの質問をしたいと思います:

1. オープン Web サービスの検証メカニズムは何ですか?たとえば、キーは 1 種類であると言いましたが、http 基本検証も 1 種類です。他にはどのような方法がありますか?

2. この目的のためにどのような検証メカニズムがあるのか​​知りたいです: PHP で Web サービスを呼び出すときに、最初のリクエストでのみ検証情報を送信する必要があり、その後の呼び出しでは検証情報を送信する必要がないという検証メカニズムはありますか?再確認 -- 通常のページ閲覧のプロセスと同様に、ログイン情報を一度入力した後は、タイムアウトしない限り、この Web サイトの他のページにアクセスするために再度ログインする必要はありません。

7 階の ihefe からの返信を引用:

ブラウザの検証について話しています
ユーザー: $_SERVER['PHP_AUTH_USER']
パスワード: $_SERVER['PHP_AUTH_PW']

参照: http://php. net/manual/en/features.http-auth.php



おそらく私が望むものではありません。 2 つの質問をしたいと思います:

1. オープン Web サービスの検証メカニズムは何ですか?ということで...
これは一度だけ検証されましたが、私が提供したコードは試しましたか?最後の
echo date('h:i:s');
header('WWW-Authenticate: Basic realm=""');



も削除します。これはあなたが言及したhttpの基本的な検証です

今日この問題を振り返ってみると、curlを使用してCookieを送信することで解決できるようです。

myservice.php


myproxy.php

myclient.php

ユーザーは、myclient.php (または他の場所) を介して myproxy.php に直接アクセスし、myproxy.php で Cookie とともに Curl を使用できます。

どう思いますか?

lz が言ったことは、リクエストを送信すると、サーバー側でセッションが確立され、クライアントに SID を送信して記録できます。 Cookie 内の SID が期限切れでない限り、検証情報を再度送信する必要はありません。セッションはこのメカニズムを提供します。

lz が言ったことは、リクエストを送信すると、サーバー側でセッションが確立され、クライアントに SID が送信されます。有効期限が切れていない場合は、検証情報を繰り返し送信する必要はありません。セッションはこのメカニズムを提供します。

しかし、セッション メカニズムは Web サービスにどのように適用されるのでしょうか?

セッション内で ID を保持します

セッション内で ID を保持します

まだ十分に明確ではありませんが、「検証がカールプロキシを通過する方法」について私が述べたことと何か違いますか?


毎回パスワードを渡す必要はありません。これにはセキュリティ上のリスクがあります。

Cookie、セッション、その他の同様のメカニズムを無効にすることはできませんか?

残念ながら、PHP は完璧ではありません。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート