wp_remote_get / wp_remote_post와 함께 sslverify => true를 사용하는 것이 안전합니까?


18

나는 일반적으로이 인수를 사용 wp_remote_get하여wp_remote_post

array(
    'sslverify' => false
)

보안상의 이유로 설정하고 싶습니다 true(또는 기본값이 true이므로 제거하고 싶습니다 ).

그렇게하면 문제가 발생합니까?

답변:


23

TL; DR : 예. WordPress 3.7 이상에서 해당 설정을 제거하십시오.

과거에는 많은 사람들이 sslverify = false 매개 변수를 추가했습니다. PHP를 설치할 때 인증서를 제대로 확인할 수 없기 때문입니다.

일반적으로 PHP 설치가 최신 CA 루트 인증서 사본으로 업데이트되지 않았기 때문입니다. 루트 인증서는 자주 변경되며 일반적인 브라우저 업데이트에서 발생하기 때문에 일반적으로이 변경 사항을 알 수 없습니다. 글쎄, PHP가 https URL을 검색하는 브라우저처럼 작동하면 루트 인증서 업데이트도 필요합니다. 그리고 대부분의 호스트는 PHP를 업데이트하거나 인증서 파일과 같은 특정 부분을 업데이트하지 않습니다.

WordPress가 버전 3.7에서 자동 업데이트를 구현할 때 보안 통신이 필요하도록 WordPress.org API를 업그레이드해야한다고 결정되었습니다. 이때 WordPress는 Mozilla에서 제공 한 CA Root Certificates 파일 자체의 사본을 포함하기 시작했습니다. 따라서 WordPress 3.7부터 WP_HTTP API 함수는이 파일을 사용하여 인증서 설치를 수행하며 PHP 설치와 함께 패키지에 포함 된 이전 버전이나 오래된 버전은 아닙니다.

따라서 WordPress 3.7 이상에서는 sslverify 매개 변수를 제거하고 http 기능이 올바른 인증서 확인을 수행하는 것이 좋습니다. 알려진 CA 중 하나가 서명 한 키를 사용하여 SSL을 실행하는 최신 서버는 올바르게 확인됩니다. WP_HTTP에는 최신 루트 인증서의 사본이 있어야하며 핵심 프로젝트는 WordPress에서 해당 인증서 파일을 일반 업데이트와 함께 업데이트합니다.


고마워 오토, 나는 이것이 많은 도움이 생각합니다. 플러그인에서 조건부 검사를 수행하겠습니다.
Xaver

9

SSL 확인에 실패 할 수있는 많은 이유가 있습니다. 잘못된 .ini파일 / 설정으로의 리디렉션이 너무 많 거나 인증서 또는 하위 도메인이없는 경우 어떤 경우에는, 당신은 할 이유 검색해야 하는 대한을하고 그것을 해결 . 그 주위에 방법 이 없습니다 .

그러나 일시적 으로 해당 문제를 해결하려면 (코드를 더 개발하고 나중에 SSL 오류를 수정해야한다고 가정 함) 필터를 사용할 수 있습니다.

add_filter( 'https_ssl_verify', '__return_false' );

원격 요청 중에이를 실행하면 HTTP 요청 중에 트리거되는 필터에 연결된 콜백으로 랩핑해야합니다. 올바른 사례에 대한 확인을 실제로 제거하고 있는지 확인하고 다른 요청의 보안을 유지하기 위해 한 번만 실행해야합니다.

add_filter( 'http_request_args', function( $params, $url )
{
    // find out if this is the request you are targeting and if not: abort
    if ( 'foo' !== $params['foo'] )
         return $params;

    add_filter( 'https_ssl_verify', '__return_false' );

    return $params;
}, 10, 2 );

이 플러그인이 공개적으로 배포 된 플러그인 인 경우 사용자가 켜거나 끌 수있는 간단한 옵션에 추가 할 수 있습니다. 확인 된 요청을 먼저 시도하고 그렇지 않은 경우 (및 사용자가 서명되지 않은 요청을 선택한 경우) 잠재적으로 안전하지 않은 요청으로 전환 할 수 있습니다.

경험 법칙 :

결코 사용자가 그렇게하기로 합의하고, 위험을 알고 때까지 보안되지 않은 요청을 수행하지 않습니다.


1
감사합니다. 지역 환경 관련 문제를 검색 중입니다.
Xaver

4

WordPress는 기본 서버 소프트웨어 (일반적으로 cURL)를 사용하여 네트워크 요청을 수행 할 수 있습니다. 간단히 말해서 소프트웨어가 좋고 거기에 있기 때문입니다.

다양한 이유로 (내 자신을 들여다 보지 않은) 일부 서버에서는 서버 소프트웨어가 보안 연결을 "확인"할 수 없어서 오류가 발생하는 것이 일반적입니다.

그래서:

  • 그것이 제어하는 ​​서버의 개인 코드 인 경우 서버가 올바르게 요청하고이 설정이 비활성화되어 있지 않은지 확인해야합니다
  • 그것이 공개 배포를위한 코드라면 아마도 그것을 비활성화하고 싶지 않을 것입니다. 그러나 충분히 인기가 있다면 어느 시점에서 고장난 서버에서 끝날 것입니다 (사람들에게 말하는 것에서) 올바른 구성은 요청에 대해 사용하지 않도록 설정하는 등의 설정을 제공 해야 합니다.)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.