>  기사  >  백엔드 개발  >  uid 및 기타 ID를 암호화하기 위해 PHP에서 가장 빠른 암호화 및 암호 해독 방법은 무엇입니까?

uid 및 기타 ID를 암호화하기 위해 PHP에서 가장 빠른 암호화 및 암호 해독 방법은 무엇입니까?

WBOY
WBOY원래의
2016-12-01 01:27:432076검색

과거에는 a.com?uid=16과 같은 주소와 같이 항상 프런트엔드에서 get 매개변수로 id가 직접 전달되었습니다. 사용자가 이 패턴을 발견하면 16을 17, 18로 변경하여 볼 수 있습니다. , 19 등 유저별 데이터가 유실되었는데 어떻게 해결하셨는지 여쭤보고 싶습니다.


요구 사항은 사용자가 다른 사용자의 정보를 볼 수 없다는 의미가 아니라 누구나 볼 수 있다는 의미입니다. 그렇다면 왜 여전히 그러한 필요성이 있습니까? 이는 WeChat의 WeChat ID와 같습니다. WeChat ID가 있으면 해당 사람을 검색할 수 있습니다. WeChat ID가 없으면 크리덴셜 스터핑이나 행운 등을 통해 해당 사람을 찾기가 어렵습니다. Youku, Tudou, Bilibili 등 모든 동영상 웹사이트는 주소 표시줄에 동영상 ID를 직접 표시하지 않으며 모두 암호화되어 있습니다. (동영상 웹사이트가 데이터베이스에 연속된 ID를 사용하지 않는다면 제가 말한 것이 아닙니다... 사실 저는 위 웹사이트의 데이터베이스를 본 적이 없습니다.)


요구 사항은 암호화와 복호화가 빠르고 해독이 어려워야 한다는 것입니다. (전자가 우선)

답글 내용:

과거에는 a.com?uid=16과 같은 주소와 같이 항상 프런트엔드에서 get 매개변수로 id를 직접 사용했습니다. 사용자가 이 패턴을 발견하면 16을 17, 18로 변경하여 볼 수 있습니다. , 19 등 유저별 데이터가 유실되었는데 어떻게 해결하셨는지 여쭤보고 싶습니다.


요구 사항은 사용자가 다른 사용자의 정보를 볼 수 없다는 의미가 아니라 누구나 볼 수 있다는 의미입니다. 그렇다면 왜 여전히 그러한 필요성이 있습니까? 이는 WeChat의 WeChat ID와 같습니다. WeChat ID가 있으면 해당 사람을 검색할 수 있습니다. WeChat ID가 없으면 크리덴셜 스터핑이나 행운 등을 통해 해당 사람을 찾기가 어렵습니다. Youku, Tudou, Bilibili 등 모든 동영상 웹사이트는 주소 표시줄에 동영상 ID를 직접 표시하지 않으며 모두 암호화되어 있습니다. (동영상 웹사이트가 데이터베이스에 연속된 ID를 사용하지 않는다면 제가 말한 것이 아닙니다... 사실 저는 위 웹사이트의 데이터베이스를 본 적이 없습니다.)


요구 사항은 암호화와 복호화가 빠르고 해독이 어려워야 한다는 것입니다. (전자가 우선)

맞습니다. 사용자가 다른 사용자의 데이터를 보는 것을 방지하는 것이 목적이라면 약간 편향된 생각입니다.

해야 할 일은 uid를 암호화하는 대신 백엔드에서 인증을 수행하는 것입니다. 예를 들어, 현재 로그인한 사용자가 uid=16인 경우 a.com?uid=17(또는 16페이지가 아닌 다른 페이지)를 요청하면 백엔드는 해당 사용자에게 권한이 없다고 판단하고 해당 반환( 빈 페이지를 출력하거나 403을 직접 발생시키는 등).
인증 구현 방법은 간단히 $_SESSION['uid']에 로그인한 사용자의 uid를 기록하고, 요청이 들어올 때마다 $_GET['uid'] == $_SESSION['uid']이 참인지 판단하면 됩니다.


2016-10-26 21:51 보충: <<<
질문 소유자가 질문을 업데이트하고 사용자 정보는 누구나 볼 수 있다고 했는데 그냥 uid 숨기기. 이러한 상황이 발생했을 때 내 접근 방식은 사용자 테이블에 openid 필드를 추가하고 이를 인덱스에 추가하는 것입니다. 사용자가 등록하면 uid, UNIX 时间戳, <의 조합을 통해 若干长度的随机字符串을 전달할 수 있습니다. 🎜> 등 클래스의 기능을 이용하여 고유한 md5()을 생성합니다. 정보가 외부에 공개되는 경우 openid를 사용하여 데이터를 검색합니다. openid<<


암호화 사용을 고집한다면 온라인으로 검색할 수 있습니다. 이미 기성품인 성숙한 솔루션이 많이 있습니다. Google에서

을 키워드로 검색했는데 첫 페이지에 나오는 솔루션이 거의 전부였습니다. 예를 들어, 검색결과 첫 번째 항목에서 다음 코드를 발췌하여 참고하시면 됩니다(테스트해보지는 않았습니다). PHP加解密

출처: http://jerry17768java.blogspo...

해시+임의의 일부

쿠키를 기반으로 사용자를 식별하는 등 권한 판단 기능을 추가해야 한다고 생각합니다.

암호화/복호화는 OpenSSL AES를 사용할 수 있습니다.

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