web-dev-qa-db-ja.com

Wp_remote_postとwp_safe_remote_postの違い

wp_remote_postのドキュメントには があります

多くの場合、あなたはwp_safe_remote_postを使ったほうがよいでしょう。

ソースコードを見ると、両者の間で異なる唯一の行はwp_safe_remote_postがこれを持っているということです:$args['reject_unsafe_urls'] = true;

この記事 は私が見つけた最良の説明であり、私がwp_remote_postを使用するのは私が自分のサイトにリモート呼び出しをしているときだけであることを示しているようです。

それで、私はwp_remote_postを使いたいという他の状況はありますか、それとも私はいつもwp_safe_remote_postを固執するべきですか?

3
Sam Schneider

それで、私が他にwp_remote_postを使いたいという状況はありますか、それとも常にwp_safe_remote_postを使い続けるべきですか?

2つの関数は、 wp_safe_remote_post()reject_unsafe_urls引数をtrueに設定すること以外はまったく同じです。この引数により、URLは wp_http_validate_url()WP_Http::request() に渡されます。

その関数から、wp_remote_post()の代わりにwp_safe_remote_post()を使う必要があるというユースケースがいくつかあることがわかります。

  1. Httpでもhttpsでもないプロトコルを使用している場合*
  2. ユーザーを渡すか、URLを渡す必要がある場合.
  3. Localhostに投稿している場合**
  4. 80、443、または8080以外のポートを使用する必要がある場合。

wp_http_validate_url()またはwp_safe_remote_post()が呼び出されるかどうかにかかわらず、HTTPリクエストでwp_remote_post()を介してURLを渡すために http_request_reject_unsafe_urls フィルターを使用することも可能です。

[*] reject_unsafe_urlsが設定されていない場合でも、URLは wp_kses_bad_protocol() を介して渡され、許可されるプロトコルはhttp、https、およびsslです。

[**] http_request_Host_is_externalフィルタを使用して真の値を返すことで、wp_safe_remove_post()をローカルホストに使用することが可能です。

1
Nathan Johnson

_safe_ 関数は、入力サニテーションにおける遅い試みのようなもので、コードがその点に到達するずっと前に起こったはずのものです。 (その時点で、ユーザーが解決しなければならない構成上の問題があることをユーザーに通知する機能がないと、要求は失敗します)。

あなたはおそらく常にそれらを使うべきで、あなたが "基本的な" URLフォーマットを持たずそして最も一般的なポート番号を使うものにアクセスしようとしたためにそれらが失敗する状況に対処する準備ができています。

2
Mark Kaplun

何の質問?あなたはすべての興味ある情報を見つけました。

wp_safe_remote_post()関数コメントは言う

POSTメソッドを使用して、安全なHTTPリクエストから生のレスポンスを取得します。この機能は、HTTPリクエストが任意のURLに対して行われている場合に理想的です。 URLはリダイレクトを回避し、偽造攻撃を要求するために検証されます。

私はいつもwp_safe_remote_postを使うべきだと思います。安全です。

0
Maxim Sarandi