0

https://developers.facebook.com/docs/authentication/signed_request/의 설명서는 인코딩 된 데이터의 예를 보여줍니다. 잘못된 것 같습니다. base64_decodeFacebook의 signed_request 문서 예제에서 유효하지 않은 base64가

{"algorithm":"HMAC-SHA256","0":"payload"} 
eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsIjAiOiJwYXlsb2FkIn0= 

인수는 = 패딩 문자를 누락되었습니다

<?php 
    echo base64_decode("eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsIjAiOiJwYXlsb2FkIn0"); 
    echo "\n"; 
    echo base64_encode('{"algorithm":"HMAC-SHA256","0":"payload"}'); 
    echo "\n"; 
?> 

출력을 제공합니다. 동일한 데이터에 base64_encode을 사용하면 PHP로 생성되지 않았거나 사용 된 PHP 버전이 도청 당했거나 무엇을 모르겠습니다. 동일한 문서 페이지에는 누락 된 = 문자열에 서명하는 서명이 제공됩니다.

질문 : Facebook 문서에서 패딩을 생략하거나 프로덕션 코드에서 이러한 종류의 누락이 예상 되나요?

다른 언어도 PHP처럼 "정상적으로"실패하지 않으며 빠진 패딩 기호가있는 base64 데이터를 실제로는 디코딩하지 않습니다. 따라서 다소 중요합니다.

답변

2

내 가게는 C#으로 물건을 만들고 우리는 패딩을 직접 추가했습니다.

자신의 플랫폼에서 수년간 개발 한 페이스 북을 알고 ... 음,이 작은 문서 딸꾹질이 전혀 나를 놀라게하지 않는다고 말하자.