>백엔드 개발 >PHP 튜토리얼 >javascript - PHP cURL 또는 유사한 클라이언트 요청은 교차 도메인으로 간주되지 않습니다. 안전하지 않습니까? 어떤 예방조치가 시행되고 있나요?

javascript - PHP cURL 또는 유사한 클라이언트 요청은 교차 도메인으로 간주되지 않습니다. 안전하지 않습니까? 어떤 예방조치가 시행되고 있나요?

WBOY
WBOY원래의
2016-12-01 01:27:401539검색

시뮬레이션 요청에도 도메인 간 제한이 있을 것이라고 생각했습니다PHP cURL.

질문

이전에 인터페이스를 디자인할 때 접근 권한이 필요한 민감한 데이터(예: 로그인 후 확인해야 하는 개인 데이터). token 테스트를 해보겠습니다.

그러나 다른 일반 인터페이스는 직접 얻을 수 있는데, 크로스 도메인 호출을 방지하기 위해 크로스 도메인 헤더가 추가됩니다. 그러나 나중에 PHP cURL를 통해 호출이 성공할 수 있다는 사실이 밝혀졌습니다. 나중에 eechen 님의 답변을 읽었습니다. 다음과 같습니다:

크로스 도메인을 방지하기 위한 동일 출처 정책은 브라우저의 보안 메커니즘입니다. PHP의 cURL은 다운로드에 file_get_contents를 사용하는 것처럼 아무런 제한 없이 명령줄에서 브라우저(클라이언트)로 간주될 수 있습니다. 인터넷상의 내용은 임의적입니다. 출처.

이 디자인은 좀 무리라고 생각하시나요? JS Ajax도메인 간 제한이 있습니다. PHP cURL이 양식에는 도메인 간 제한이 없습니다. 도메인 간 제한을 결정할 때 PHP cURL 형식을 도메인 간 제한으로 사용하지 않은 이유는 무엇입니까?

이 형식의 도메인 간 통화를 방지하는 방법은 무엇입니까?

솔루션

  1. 이전에 NetEase Cloud 클라이언트를 만들고 싶었을 때 도메인 간 호출을 방지하기 위해 网易云音乐을 사용하는 CSRF_TOKEN의 인터페이스를 본 적이 있습니다.
    PS: 이 솔루션이라고 하면 웹페이지를 크롤링해서 CSRF_TOKEN를 얻을 수 있고, 크로스도메인 통화를 할 수 있는 것 같죠?

  2. 또한, 이 문제를 해결할 수 있는 솔루션이 있나요?

답변을 기다리겠습니다. 감사합니다!

============ 10-27 15:51 ==============

죄송합니다. 착각했습니다. PHP cURL에서 특별한 처리를 한 줄 알았습니다. 南小鸟님의 답변에 감사드립니다. 이는 실제로 지정된 URL에 직접 액세스하는 것과 동일하며, 당연히 도메인 간 문제도 없을 것입니다...

외부에서 내 인터페이스에 접근할 수 없도록 하려면 어떻게 해야 하나요?

인트라넷

어떤 설정도 필요하지 않습니다.

외부 네트워크

  1. 설정CSRF_TOKEN, 그런데 일부 CSRF_TOKEN 정보를 확인해보니 CSRF_TOKEN는 주로 跨站请求伪造을 방지하기 위한 것이지, 이것이 아닌... 인증 정보 운반을 방지하기 위한 것입니다cookie:SESSIONID 공격.

  2. REFER확인하세요.

  3. 다른 방법은 없나요?

현재는 JWT을 사용하여 Token을 생성할 계획입니다. 모든 요청에는 Token을 가져와야 합니다(사용자 정보 가져오기, 권한 제어 등).

구멍 난 것 같아 죄송해요. Gforce님의 답변에도 감사드립니다.

답글 내용:

시뮬레이션 요청에도 도메인 간 제한이 있을 것이라고 생각했습니다PHP cURL.

질문

이전에 인터페이스를 디자인할 때 접근 권한이 필요한 민감한 데이터(예: 로그인 후 확인해야 하는 개인 데이터). token 테스트를 해보겠습니다.

그러나 다른 일반 인터페이스는 직접 얻을 수 있는데, 크로스 도메인 호출을 방지하기 위해 크로스 도메인 헤더가 추가됩니다. 그러나 나중에 PHP cURL를 통해 호출이 성공할 수 있다는 사실이 밝혀졌습니다. 나중에 eechen 님의 답변을 읽었습니다. 다음과 같습니다:

크로스 도메인을 방지하기 위한 동일 출처 정책은 브라우저의 보안 메커니즘입니다. PHP의 cURL은 다운로드에 file_get_contents를 사용하는 것처럼 아무런 제한 없이 명령줄에서 브라우저(클라이언트)로 간주될 수 있습니다. 인터넷상의 내용은 임의적입니다. 출처.

이 디자인은 좀 무리라고 생각하시나요? JS Ajax도메인 간 제한이 있습니다. PHP cURL이 양식에는 도메인 간 제한이 없습니다. 도메인 간 제한을 결정할 때 PHP cURL 형식을 도메인 간 제한으로 사용하지 않은 이유는 무엇입니까?

이 형식의 도메인 간 통화를 방지하는 방법은 무엇입니까?

솔루션

  1. 이전에 NetEase Cloud 클라이언트를 만들고 싶었을 때 도메인 간 호출을 방지하기 위해 网易云音乐을 사용하는 CSRF_TOKEN의 인터페이스를 본 적이 있습니다.
    PS: 이 솔루션이라고 하면 웹페이지를 크롤링해서 CSRF_TOKEN를 얻을 수 있고, 크로스도메인 통화를 할 수 있는 것 같죠?

  2. 또한, 이 문제를 해결할 수 있는 솔루션이 있나요?

답변을 기다리겠습니다. 감사합니다!

============ 10-27 15:51 ==============

죄송합니다. 착각했습니다. PHP cURL에서 특별한 처리를 한 줄 알았습니다. 南小鸟님의 답변에 감사드립니다. 이는 실제로 지정된 URL에 직접 액세스하는 것과 동일하며, 당연히 도메인 간 문제도 없을 것입니다...

외부에서 내 인터페이스에 접근할 수 없도록 하려면 어떻게 해야 하나요?

인트라넷

어떤 설정도 필요하지 않습니다.

외부 네트워크

  1. 설정CSRF_TOKEN, 그런데 일부 CSRF_TOKEN 정보를 확인해 보니 CSRF_TOKEN은 주로 跨站请求伪造을 방지하기 위한 것이지, 이를 위한 것이 아닌... 인증 정보 운반을 방지하기 위한 것입니다cookie:SESSIONID 공격.

  2. 확인REFER.

  3. 다른 방법은 없나요?

현재 JWT을 사용하여 Token을 생성할 계획입니다. 모든 요청에는 Token을 가져와야 합니다(사용자 정보 가져오기, 권한 제어 등).

구멍 난 것 같아 죄송해요. Gforce님의 답변에도 감사드립니다.

php 컬은 브라우저에서 직접 URL을 여는 것과 동일하며, 물론 크로스 도메인으로 간주되지 않습니다.

JWT를 사용하는 등 인터페이스 검증을 수행할 수 있습니다

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.