[CakePHP 2.x]Security 구성 요소를 디버깅하는 방법
2593 단어 cakephp2.xPHPCakePHPcakephp2
배경
한 프로젝트에 Security 구성 요소를 도입해 보았지만,
BlackHole에 직행해 버리는 문제에 빠졌으므로, 디버그의 방법을 공유합니다.
환경
PHP 5.6
CakePHP 2.x
해설
Security 컴포넌트는 Form 도우미와 약한 연관성을 가지고 있습니다.
※실제로 클래스끼리 관련을 가지고 있는 것은 아니고 "_Token"
라고 하는 리퀘스트 파라미터로 연결되어 있습니다.
따라서 디버깅할 때 Securityt 구성 요소뿐만 아니라 Form 도우미 쪽도 인식해야 합니다.
공식 문서에서의 기재 부분은 이하
CakePHP 2.x Cookbook: 보안
CakePHP 2.x Cookbook: FormHelper - 보안 구성 요소 사용
처리 흐름
꽤 생략한 그림입니다만, 이하가 Security 컴퍼넌트와 Form 헬퍼의 처리의 흐름입니다.
PHP 5.6
CakePHP 2.x
해설
Security 컴포넌트는 Form 도우미와 약한 연관성을 가지고 있습니다.
※실제로 클래스끼리 관련을 가지고 있는 것은 아니고 "_Token"
라고 하는 리퀘스트 파라미터로 연결되어 있습니다.
따라서 디버깅할 때 Securityt 구성 요소뿐만 아니라 Form 도우미 쪽도 인식해야 합니다.
공식 문서에서의 기재 부분은 이하
CakePHP 2.x Cookbook: 보안
CakePHP 2.x Cookbook: FormHelper - 보안 구성 요소 사용
처리 흐름
꽤 생략한 그림입니다만, 이하가 Security 컴퍼넌트와 Form 헬퍼의 처리의 흐름입니다.
1.2: generateToken()에서 요청 매개변수 배열에
"_Token"
를 설정합니다.여기에서는 hash를 생성하고 있을 뿐이므로, 여기서 디버그해도 그다지 의미가 없습니다.
2.1.1 : secure ()는
"_Token"
가 요청 매개 변수 배열에 설정된 경우 호출되어 hidden 필드로 Token 값을 출력합니다.여기에서 Token 생성 로직을 볼 수 있으므로 디버깅 해 보면 좋다.
그건 그렇고, Token은 양식의 필드 정보의 hash 값입니다.
또, 이 처리는 end 메소드로부터 불려 가기 (위해)때문에, view 측에서 end 를 호출하지 않으면 실행되지 않습니다.
1.1: blackHole()은 잘못된 요청으로 판단되면 호출됩니다.
대부분은 Token의 체크에 걸렸을 경우에 호출되는 것 같습니다.
여기 체크 로직으로 디버깅하여 생성 로직 측과 비교하면 어디가 다른지 알 수 있다고 생각합니다.
요약
무엇인가는 Security 컴퍼넌트입니다만,
디버그 개소조차 파악할 수 있으면 문제는 곧 해결할 것입니다.
참고
Reference
이 문제에 관하여([CakePHP 2.x]Security 구성 요소를 디버깅하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Gro/items/da2045052ef94e190727텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)