개발 꿀팁/PHP

php 인터페이스 보안: php 인터페이스 암호화를 위한 네 가지 시나리오

Jammie 2022. 7. 25. 13:20
반응형

이 글은 php 인터페이스 보안에 관한 내용입니다. php 인터페이스 암호화를 위한 네 가지 방안으로 참고 가치가 있습니다. 필요한 친구가 있으면 참고하시어 도움이 되시기 바랍니다.
인터넷 Coder로서, 당신이 프론트 엔드든 백 엔드든, 당신은 HTTP 요청에 대해 어느 정도 이해하고, HTTP의 특성을 알고, HTTP 안의 Reque를 확실히 이해해야 한다.st와 response가 무엇인지, 왜 사이트에 쿠키, 세션, 인증코드의 의미와 필요성이 존재하는지 알 수 있다.앱 인터페이스의 보안성을 검토하는 것은 HTTP 요청의 보안성을 검토하는 것이기 때문이다.

일반적으로 PC에서는 암호화된 쿠키를 통해 회원 식별 및 유지 세션을 진행하지만, 쿠키는 브라우저의 로컬 스토리지 기능입니다.어플을 사용할 수 없어서 나는토큰을 통해 회원 식별이 가능해야 하는데, 이 토큰은 어떻게 처리해야 할까요?

먼저, 이 인터페이스의 암호화를 하기 전에, 내가 함께 경험한 네 가지 방안에 대해 이야기한다.

시나리오 1
APP측 개발자와 특정 md5 조합 알고리즘을 약속하고 양쪽을 대조하며 같으면 allow, 다르면 deny;
하지만 이것도 안전하지 않습니다. 만약 앱이 디컴파일되면 이러한 약속된 알고리즘이 드러나게 됩니다. 특히 안드로이드 앱에서는 알고리즘이 있으면 충분히 가능합니다.아날로그 인터페이스는 검증을 통과한다.

시나리오 2
데이터베이스 회원표의 password는 무작위로 몰래 달아나 이중으로 암호화된 md5 값을 가지고 있습니다. 사용자가 로그인할 때, 나는 회원에게 상응하는 uid를 돌려줍니다.password와 password는 비록 평문이지만, 다른 사람이 알고 있어도 로그인할 수 없다. 결국 암호화를 거친 다음 인터페이스를 요청할 때마다 user_id=333&token= aa37e10c7137ac849eab8a2d5020568f, 메인 키 uid를 통해 현재 uid에 해당하는 토큰을 빠르게 찾은 다음 다시 비교한다.
하지만 이런 생각은 투양투심플의 것이고, 가방잡는 사람은 암호문 비밀번호로 이 회원에 로그인할 수 없지만 일단 알게 되면이 토큰은 사용자가 비밀번호를 변경하지 않는 한 회원과 관련된 인터페이스를 계속 운영할 수도 있다

시나리오 3
이 암호화 알고리즘은 uid+ 사이트 공개키를 시효로 암호화해 일정 시효 내에 이용할 수 있다.회원가입에 성공하면 서버측에서 해당 ID를 암호화한 후 클라이언트로 반환하며 클라이언트가 인터페이스를 요청할 때마다 해당 파라미터를 가지고 와서 서버측에서 복호화 인증을 거친다.
그렇다고 안전하지 않다.불시에 출발한 것은 내부 이직자들의 악의적 조작 때문이라고 한다.내부적으로 호의적이지 않은 사람이 해당 알고리즘의 규칙을 알게 되면 데이터베이스 권한이 없더라도 인터페이스를 통해 해당 회원을 조작할 수 있다.

시나리오 4
회원이 로그인 할 때 로그인 인터페이스를 요청하면 서버 측에서 클라이언트에 token을 반환합니다. 이 token은 사이트 공개키 + 현재 uid + 현재 타임스탬프 + 난수 이중암호화 규칙을 생성하여 필요에 따라 해당 token을 cach에 넣습니다.e가 시간이 지나면 자동으로 효력을 상실할 것인지, 데이터베이스에 넣을 것인지(데이터베이스에 넣으려면 따로 표를 들고 오는 김에 사용자의 로그인, 로그인 시간을 기록해 둘 것인지) 사용자가 로그인을 할 때 이 토큰이 사용자의 인위적인 로그인 사이에서만 유용하게 쓰이도록 변경한다.
보안을 위해 일정 시간 내에 사용자가 자동으로 로그아웃할 수 있도록 해야 합니다. 이 계획은 Linux와 데이터베이스의 권한 관리와 함께 외부와 내부로부터 보호할 수 있습니다.

기타 인터페이스 개발 주의사항

데이터 형식은 JSON 형식의 데이터를 사용하는 것이 가장 좋은데, JSON은 크로스 플랫폼성이 비교적 좋기 때문이다.JSON을 생성할 때 json의 두 가지 형식을 고려해야 한다: 객체(사전)와 배열; mobile 개발 언어에는 유사한 PHP의 foreach가 존재하지 않으며 배열만 이동할 수 있다. 객체에 대한 조작은 일반적으로 키 이름에서 키 값을 추출한다.

성공하든 실패하든.인터페이스는 명확한 데이터 상태 정보를 제공해야 하며 NULL을 반환할 수 없으며 NULL을 반환하면 IOS 측에서 붕괴된다

반응형