WeChat 액세스 탐색 - 암호화된 메시지 처리

高洛峰
풀어 주다: 2017-03-06 10:18:42
원래의
2700명이 탐색했습니다.

이전 블로그 게시물에서는 패시브 콜백 인터페이스의 추상 데이터 수준을 소개하고 엔터티를 XML로 변환하는 효율적인 기본 기능을 구현했습니다. 신중한 개발자는 처음으로 공식 계정의 기본 구성을 수정할 때 "메시지 암호화 및 복호화 방법"이라는 옵션을 찾을 수 있습니다. 확장 후 선택할 수 있는 값은 "일반 텍스트 모드"(기본값), "호환 모드", "안전 모드(권장)"입니다. 그렇다면 이 안전 모드는 무엇일까요? 안전 모드에 적응하는 방법은 무엇입니까? 이러한 질문을 염두에 두고 WeChat 액세스에 대한 세 번째 탐색 여정을 시작하겠습니다.

가증스러운 트래픽 하이재킹 기사 시작 부분에서 일반적인 사용 시 휴대폰 스크린샷 두 개를 보여드리겠습니다.

WeChat 액세스 탐색 - 암호화된 메시지 처리

오른쪽 화면 하단 모서리에 녹색 물 풍선이 표시됩니다. 이는 표시할 그림과 호환되지 않으며 분명히 디자이너가 수행한 것이 아닙니다. 현재 통신 패키지에 남은 교통 정보를 표시하려면 물풍선을 클릭하세요.

가정 LAN부터 인터넷, IDC 전산실 인트라넷까지 우리의 데이터 링크는 포워딩 프로세스로 가득 차 있습니다. 당사의 데이터는 어떤 장치에서든 전달될 때 지속되고 저장될 수 있습니다. 당신의 사무실 인트라넷은 안전합니까? 주변에 숨어 있는 해커는 LAN의 특정 네트워크 카드를 무차별 모드로 설정하여 LAN에 있는 모든 데이터의 복사본을 받을 수 있습니다. 아무것도 찾을 수 없을 수도 있지만 귀하의 개인 데이터는 다른 사람에 의해 도난당했습니다.

안전 모드를 사용하여 사용자 개인 정보 보호

안전 모드가 활성화되면 패시브 콜백 인터페이스에서 수신하는 메시지가 아래와 같이 크게 변경됩니다.

<xml>
    <ToUserName><![CDATA[gh_38a2de904e09]]></ToUserName>
    <Encrypt><![CDATA[i7b8ccNA9OWDhau/F26aUWKFJ6Jd0imsDQIFPSdSfAg8mHT7rL0kIWSVpcqf6/dVSoOQOQK4T/CS3w96j4k3qcg89M6xn2RGZBs+9JkrsdRig5yhcia1B59akWb1t9QdutXqnl4edAqtXEh8SIs+N2HkOTTVldtOUHpdwLqRYuC4F6ejUoXui4xKuc3oyODR9edfL+xzZ7JfMJ1KUNF/YBJMj/Ba9y/CLLYmdFYOtCMH7tMUz8h+S0XKkHKN6r0ELLCIZJ9+PPlHZcfSGhwMLUeRF1nMIjXGEKHkI0uMcruh7wD96lMU/RFgJDjAk26xbmUYfa3l+34p+txw4R8iD3Q58S8Yekiy3lUsbk+C6eDeefGs1ck23BQ8xWU3AReWH2dEsY6SYIkb3ANeyJmcoIKZfpc/31njp0KcHAxL1Lk=]]></Encrypt>
</xml>
로그인 후 복사

일반 텍스트 부분에는 메시지의 공식 계정의 원래 ID인 gh_38a2de904e09가 유지되고 나머지는 암호화된 텍스트임을 알 수 있습니다. (이 구조를 통해 동일한 백엔드 시스템이 여러 공식 계정에 액세스한 다음 각 공식 계정 설정 정보를 사용할 수 있습니다. 별도의 암호 해독을 위해). 공식 문서(http://qydev.weixin.qq.com/wiki/index.php?title=암호화 및 복호화 라이브러리 다운로드 및 반환 코드)에는 암호화 구조가 명확히 설명되어 있지 않으므로, 자세한 설명을 드리겠습니다. 여기. .

WeChat 액세스 탐색 - 암호화된 메시지 처리

이전에 네트워크 프로토콜을 개발한 독자라면 일반적인 가변 길이 메시지인 이 구조를 쉽게 이해할 수 있을 것입니다. 가변 길이 영역의 길이를 나타내는 표시가 있어야 합니다. 이 값은 읽을 때 적용되며 고정 길이 데이터 이후에는 몇 바이트만큼 읽혀집니다. 구조의 시작 부분에는 16바이트의 난수가 있습니다. 이 부분은 실질적인 의미가 없으며 나중에 암호화된 메시지를 반환할 때 난수 패딩 데이터로 사용될 수 있습니다.

안전 모드 서명 확인 방법

WeChat의 수동 콜백 인터페이스는 실제로 HTTP POST 요청입니다. HTTP 요청은 요청 헤더와 요청 본문으로 구분됩니다. WeChat은 암호화된 XML 데이터를 요청 본문에 교묘하게 넣고 서명을 확인할 때 사용되는 매개변수를 요청 헤더에 넣습니다.

POST /cgi-bin/wxpush? msg_signature=477715d11cdb4164915debcba66cb864d751f3e6×tamp=1409659813&nonce=1372623149 HTTP/1.1
Host: qy.weixin.qq.com
Content-Length: 613
<xml>
    <ToUserName><![CDATA[wx5823bf96d3bd56c7]]></ToUserName>
    <Encrypt><![CDATA[RypEvHKD8QQKFhvQ6QleEB4J58tiPdvo+rtK1I9qca6aM/wvqnLSV5zEPeusUiX5L5X/0lWfrf0QADHHhGd3QczcdCUpj911L3vg3W/sYYvuJTs3TUUkSUXxaccAS0qhxchrRYt66wiSpGLYL42aM6A8dTT+6k4aSknmPj48kzJs8qLjvd4Xgpue06DOdnLxAUHzM6+kDZ+HMZfJYuR+LtwGc2hgf5gsijff0ekUNXZiqATP7PF5mZxZ3Izoun1s4zG4LUMnvw2r+KqCKIw+3IQH03v+BCA9nMELNqbSf6tiWSrXJB3LAVGUcallcrw8V2t9EL4EhzJWrQUax5wLVMNS0+rUPA3k22Ncx4XXZS9o0MBH27Bo6BpNelZpS+/uh9KsNlY6bHCmJU9p8g7m3fVKn28H3KDYA5Pl/T8Z1ptDAVe0lXdQ2YoyyH2uyPIGHBZZIs2pDBS8R07+qN+E7Q==]]></Encrypt>
</xml>
로그인 후 복사

서명 생성 과정:

WeChat 액세스 탐색 - 암호화된 메시지 처리

위 계산을 통해 현재 암호화된 메시지의 계산된_sign 서명을 얻은 다음 매개변수 msg_signature를 얻습니다. 요청 헤더에서 가져옵니다.calculated_sign과 msg_signature가 동일하면 메시지가 변조되지 않았음을 의미합니다. 이 서명 전략에 활용되는 수학적 문제는 다음과 같습니다.
1. SHA1 다이제스트 알고리즘은 모든 데이터를 계산하며 모든 변경으로 인해 최종 다이제스트가 변경됩니다.
2.
3. 타임스탬프와 임의 문자의 도입으로 인해 평문이 동일하더라도 암호문이 매번 달라지므로 AES 암호화를 해독하기가 더 어렵습니다. 🎜>서명 확인 성공 그러면 복호화된 일반 텍스트를 안전하게 사용할 수 있습니다. 평문의 형식은 이전 글에서 소개한 형식과 일치하므로, 복호화된 비즈니스 처리 로직을 재사용할 수 있습니다.

안전 모드에 대한 대응으로 반환된 XML 형식도 암호화되어야 합니다. 전체 암호화 과정은 복호화 과정과 반대 방향이므로 여기서는 자세히 설명하지 않겠습니다.

WeChat 액세스에 대한 더 많은 탐색 - 암호화된 메시지 처리 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!