분석 인터페이스
클라이언트 인터페이스 전송 규칙:
1을 사용합니다. cmd 매개변수(base64)는 다양한 인터페이스를 동적으로 호출하며 인터페이스 주소는 http://a.lovexpp.com으로 통합됩니다.
2. 배열에 전달할 매개변수를 구성하고 타임스탬프 요소(현재 타임스탬프, 초 단위까지 정확함)를 배열에 추가하고 배열의 키 값을 큰 항목에서 정렬합니다. 자연순서대로 작게
3. 배열을 key=val&key=val 형식의 문자열로 구성하고, 문자열을 XPP_KEY로 연결하고, md5(32비트 소문자)로 한 번 암호화한 다음 get sign
4. 매개변수 배열
5에 기호를 추가하고 사후 요청을 사용하여 인터페이스 주소를 요청합니다. 🎜🎜#
server 인터페이스 구문 분석 규칙:
1 매개변수 매개변수를 수신하고 결과를 json으로 구문 분석하여 매개변수 배열#을 얻습니다. 🎜🎜#2. 매개변수 배열 #
3에서 기호#🎜🎜를 제거합니다. 자연 순서에 따라 매개변수 배열 키 값을 큰 것에서 작은 것으로 정렬합니다.
4. 정렬된 매개변수 배열을 key=val&key=val 형식의 문자열로 구성하고 문자를 결합합니다. 문자열은 XPP_KEY에 연결되고 md5(32비트 소문자)로 한 번 암호화되며 기호# 🎜🎜#5를 얻었습니다. 클라이언트가 전달한 기호와 비교하면 프로세스 중에 매개변수가 변조되었을 수 있습니다.
#🎜 🎜#6. 세션의 기호와 동일하면 중복 제출이며 서버는 이 요청을 거부합니다 7. 세션8 라우팅 cmd를 실행하고(base64 구문 분석 후) 매개변수를 메소드<?php $xpp_key = "xxx"; //接收参数param,将结果解析json得到参数数组 $param = json_decode($_POST['param'] , true); //取出sign,去掉参数数组中的sign $client_sign = $param['sign']; unset($param['sign']); //将参数数组key值按照自然排序从大到小排序 krsort($param); //将排序后的参数数组按照key=val&key=val的形式组成字符串,将字符串与XPP_KEY连接,用md5加密一次(32位小写),得到sign $sb = ''; foreach($param as $key=>$val){ $sb .= $key . '=' . $val . '&'; } $sb .= $xpp_key; $server_sign = md5($sb); //将sign与客户端传过来的sign进行比对,如不一样则可能是中途被篡改参数,服务器拒绝此次请求 if($server_sign !== $client_sign){ echo json_encode(array('code'=>'invalid request')); exit; } //将sign与session中的sign对比,如果一样,则为重复提交,服务器拒绝此次请求 if($server_sign == $_SESSION['last_sign']){ echo json_encode(array('code'=>'Repeated requests')); exit(); } //此次的sign存入session $_SESSION['last_sign'] = $server_sign; //执行路由cmd(base64解析后),将参数带到该方法中 $cmd = base64_decode($param['cmd']); list($__controller,$__action) = explode('-' , $cmd); // 设置请求参数 unset($param['cmd']); unset($param['timestamp']); foreach($param as $key => $val){ $_REQUEST[$key] = $val; }권장 튜토리얼:
PHP 비디오 튜토리얼
위 내용은 PHP 인터페이스를 암호화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!