>백엔드 개발 >PHP 튜토리얼 >PHP 인터페이스 보안: PHP 인터페이스 암호화를 위한 네 가지 솔루션

PHP 인터페이스 보안: PHP 인터페이스 암호화를 위한 네 가지 솔루션

不言
不言원래의
2018-08-18 18:01:2111921검색

이 기사는 PHP 인터페이스 보안에 관한 것입니다. PHP 인터페이스 암호화를 위한 네 가지 솔루션은 특정 참고 가치가 있으므로 도움이 될 수 있습니다.

인터넷 코더로서 프런트엔드든 백엔드든 http 요청에 대해 어느 정도 이해하고, http의 특징을 알고, http에 요청과 응답이 무엇인지, 그 이유를 명확히 이해해야 합니다. 웹사이트가 존재하는 쿠키, 세션, 인증코드의 의미와 필요성. APP 인터페이스의 보안을 논의하는 것은 HTTP 요청의 보안을 논의하는 것이기 때문입니다.

일반적으로 PC 측에서는 회원 식별과 세션 유지를 위해 암호화된 쿠키를 사용하지만, 쿠키는 브라우저의 로컬 저장 기능에 속합니다. APP 측을 사용할 수 없으므로 토큰 매개변수를 통해 회원을 식별해야 하며 이 토큰을 어떻게 처리해야 합니까?

먼저 이 인터페이스를 암호화하기 전에 경험한 네 가지 솔루션에 대해 이야기하겠습니다.

옵션 1
특정 md5 조합 알고리즘에 대해 APP 개발자와 동의한 다음 두 끝을 비교합니다. 동일하면 허용하고 거부합니다.
그러나 이 역시 안전하지 않습니다. APP 프로그램이 디컴파일되면 이러한 합의된 알고리즘이 노출됩니다. 특히 Android APP에서는 해당 알고리즘을 사용하여 인터페이스 요청을 시뮬레이션할 수 있습니다.

옵션 2
사용자가 로그인할 때 데이터베이스 회원 테이블의 비밀번호는 무작위 암호화 및 이중 암호화를 사용하는 md5 값입니다. 비밀번호는 분명하지만 해당 uid와 비밀번호를 반환합니다. text , 다른 사람이 알고 있으면 로그인할 수 없습니다. 그러면 결국 user_id=333&token=aa37e10c7137ac849eab8a2d5020568f 인터페이스를 요청할 때마다 다음을 통해 현재 uid에 해당하는 토큰을 빠르게 찾을 수 있습니다. 예,user_id=333&token=aa37e10c7137ac849eab8a2d5020568f,通过主键uid可以很快的找到当前uid对应的token,然后再来比对;
但是这样想法是too yang too simple的,抓包的人虽然不能通过密文密码来登录该会员,然而一旦知道了这个token,除非用户更改密码,否则也可以一直通过这个token来操作该会员的相关接口;

方案三
通过对称加密算法,该加密算法对uid+网站公钥进行时效加密,在一定时效内可用。在会员登录成功时,服务器端对该ID加密后返回给客户端,客户端每次请求接口的时候带上该参数,服务器端通过解密认证;
但是这样做,也是不安全的。因为,防外不防内,听说这次的携程宕机就是因为内部离职人员的恶意操作。内部不怀好意的人员如果知道相应的算法规则后,就算没有数据库权限,也可以通过接口来操作相关会员;

方案四
会员登录的时候请求登录接口,然后服务器端返回给客户端一个token,该token生成的规则是 网站公钥 + 当前uid + 当前时间戳 + 一段随机数하지만 이 아이디어는 너무 간단합니다. 패킷을 캡처한 사람은 암호문 비밀번호를 통해 회원에 로그인할 수 없지만 토큰을 알면 언제든지 사용할 수 있습니다. 비밀번호를 변경하지 않는 한 회원을 운영하기 위한 토큰입니다.

옵션 3

    uid+웹사이트 공개 키에 대해 시간에 민감한 암호화를 수행하는 대칭 암호화 알고리즘을 사용합니다. 특정 시간 제한 내에서 사용할 수 있습니다. 구성원이 성공적으로 로그인하면 서버는 ID를 암호화하여 클라이언트에 반환합니다. 클라이언트는 인터페이스를 요청할 때마다 이 매개변수를 가져오고 서버는 암호 해독을 통해 인증합니다. 왜냐하면, 외부로부터 우리 자신을 보호하기 위해서는 내부로부터 우리 자신을 보호할 수 없기 때문입니다. 이번 씨트립 서비스 중단은 사임한 내부 직원들의 악의적인 운영 때문이라고 들었습니다. 내부 악의적인 사람이 해당 알고리즘 규칙을 알고 있으면 데이터베이스 권한이 없어도 인터페이스를 통해 해당 회원을 조작할 수 있습니다.

  1. 옵션 4

  2. 회원이 로그인하면 로그인 인터페이스를 요청한 후 서버가 반환됩니다. 토큰을 생성하는 규칙은 웹사이트 공개 키 + 현재 uid + 현재 타임스탬프 + 임의의 숫자 필요에 따라 토큰을 넣을지 여부를 결정합니다. 캐시하고 일정 시간 동안 자동으로 만료되도록 기다리거나, 데이터베이스에 저장하거나(데이터베이스에 저장하려면 별도의 테이블을 생성하여 사용자의 로그인 및 로그아웃 시간을 기록), 사용자가 로그인할 때 변경합니다. 사용자가 수동으로 로그아웃할 때만 토큰을 사용할 수 있는지 확인하세요. 로그인 사이에 유용합니다.
  3. 보안을 보장하기 위해 사용자는 일정 시간 내에 자동으로 로그아웃할 수 있어야 합니다. 이 솔루션은 Linux 및 데이터베이스 권한 관리와 협력하여 외부 및 내부 보호를 방지합니다.

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

JSON은 크로스 플랫폼 성능이 더 좋기 때문에 JSON을 데이터 형식으로 사용합니다. JSON을 생성할 때 json의 두 가지 형식, 즉 객체(사전)와 배열에 주의해야 합니다. 모바일 개발 언어의 PHP에는 유사한 foreach가 없으며 객체에 대한 작업은 순회할 수 있습니다. 일반적으로 키 이름을 통해 키 값을 얻습니다.

성공인지 실패인지. 인터페이스는 명확한 데이터 상태 정보를 제공해야 하며 NULL을 반환할 수 없습니다. NULL이 반환되면 IOS 측에서 충돌이 발생합니다.

관련 권장 사항:

PHP로 QR 코드를 생성하고 식별하는 방법(코드) 🎜🎜🎜🎜 Excel 파일을 CSV 형식으로 내보내는 PHP용 구현 코드 🎜🎜🎜🎜테이블의 실시간 편집을 구현하는 방법 PHP 및 Ajax 사용(코드 포함) 🎜🎜

위 내용은 PHP 인터페이스 보안: PHP 인터페이스 암호화를 위한 네 가지 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.