앞서 언급한 바와 같이: 모바일 단말 및 PHP 서버 인터페이스 통신 프로세스 설계(기본 버전)
api_token 검증을 위해 보안을 더욱 강화할 수 있습니다:
개선 1부:
테이블 2개, 인터페이스 테이블 1개, 인증 테이블 1개를 추가합니다. 디자인 참조는 다음과 같습니다.
인터페이스 테이블
字段名 | 字段类型 | 注释 |
api_id | int | 接口ID |
api_name | varchar(120) | 接口名,以"/"作为分割线,如 blog/Index/addBlog |
api_domain | varchar(256) | 所属领域 |
is_enabled | tinyint(1) | 是否可用 1:可用 0:不可用 |
add_time | int | 添加时间(戳) |
(참고: 핵심 필드만 나열되며 다른 필드는 확장 가능!!!)
권한 테이블
字段名 | 字段类型 | 注释 |
client_id | int | 客户端ID |
api_id | int | api编号 |
api_name | varchar(120) | 接口名,以"/"作为分割线,如 blog/Index/addBlog |
is_enabled | tinyint(1) | 是否可用 1:可用 0:不可用 |
add_time | int | 添加时间(戳) |
expire_time | int | 过期时间(戳) |
(참고: 핵심 필드만 나열되며 다른 필드는 확장 가능!!!)
실행 프로세스는 다음과 같습니다.
1, 모바일 단말기와 서버에서 생성된 api_token을 비교합니다. 동일하지 않으면 바로 오류가 반환됩니다.
2. 인터페이스 URL에 따라, api_name과 클라이언트가 반환한 값을 조합합니다. client_id는 매개변수이며, 레코드가 존재하고 유효한 경우(사용 가능 여부, 만료 여부) 이는 권한을 의미합니다. 확인이 통과되고 인터페이스 데이터가 반환됩니다.
향상된 장소 2:
매우 특별한 인터페이스의 경우에는 그렇지 않습니다. 왜 특별한지 또는 어떤 것이 특별한 것으로 간주되는지 알 수 있습니다. 간단히 말해서, http 요청이 하이재킹될 수 있고 전달된 매개변수가 변조될 수 있다고 생각합니다. 예를 들어 보겠습니다.
에는 직접 이체 인터페이스 페이지에 5위안을 입력했는데, 이는 5위안을 상대방에게 이체하겠다는 뜻입니다. 결과적으로 http 이체 과정에서 누군가가 강탈하여 10,000위안으로 변경하였고, 계좌가 변경되었습니다. 생각해 보면 이 문제에 대한 두 가지 해결 방법이 있을 것입니다.
해결 방법 1: https를 사용하세요. 이에 대해서는 자세히 설명하지 않겠습니다.
옵션 2: 디지털 서명 사용, 구현 원칙은 다음과 같습니다.
http 요청, 다음 3개 매개변수를 전달해야 하는 경우
매개변수 이름 1 = 매개변수 값 1
매개변수 이름 2 = 매개변수 값 2
매개변수 이름 3 = 매개변수 값 3
매개변수 이름을 하나 더 추가할 수 있습니다. 이 파라미터의 값은 identity_key(이름은 중요하지 않음)이며, 이 파라미터의 값은 처음 몇 개의 파라미터 값을 순서대로 추가한 후 암호화한 결과입니다.
즉,identity_key = md5('매개변수 값 1' + '매개변수 값 2' + '매개변수 값 3' + ' 암호화 키');
따라서 전달되는 최종 매개변수는 다음과 같습니다. 매개변수 이름 1=매개변수 값 1매개변수 이름 2=매개변수 값 2매개변수 이름 3=매개변수 값 3client_id=client_id 값identity_key=md5('매개변수 값 1' + '매개변수 값 2' + '매개변수 값 3'+ ' client_id 값' + '암호화 키')
서버가 매개변수를 수신한 후 동일한 암호화 규칙에 따라identity_key를 다시 생성하고 서버의 🎜> Identity_key는 클라이언트의 identity_key와 비교하여 확인됩니다. 동일하지 않으면 변조되었음을 의미합니다. 위 내용은 다양한 측면을 포함하여 모바일 단말기와 PHP 서버 인터페이스 간의 통신 프로세스 설계의 향상된 버전을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.