1. 배경 소개
많은 분들이 휴대폰으로 마케팅 문자 메시지를 받아보셨을 텐데요, 문자 메시지에는 아래와 같은 URL이 포함되어 있을 때가 있습니다
이 URL은 다음과 같습니다. 매우 짧은 경우가 많지만, 자세히 보면 중간에 점프가 있는 것을 볼 수 있습니다. 브라우저 주소 표시줄에 표시되는 URL은 문자 메시지에 표시되는 URL이 아닙니다.
2. 원리 및 적용
짧은 URL은 일반적으로 매우 짧은 도메인 이름을 사용하며, 경로 매개변수는 일반적으로 3~6자로만 구성되므로 매우 간결합니다!
짧은 URL을 사용하는 전제는 짧은 URL을 먼저 생성하는 것입니다. 주로 특정 알고리즘을 사용하여 짧은 문자를 긴 문자에 대응하도록 합니다. 예를 들어 일반적으로 사용되는 0~9의 62자 중에서 6자를 선택합니다. , a-z 및 A-Z 문자로 구성됩니다. 이는 62의 6승 조합이 가능하며 약 568억 개의 고유 단축 URL이 있음을 의미합니다.
서버는 path 매개변수를 통해 실제 긴 URL을 쿼리한 다음 301/302를 사용하여 실제 URL로 이동합니다!
리디렉션과 관련하여 301은 영구 리디렉션이고 302는 임시 리디렉션입니다. 짧은 주소는 일단 생성되면 변경되지 않으므로 301을 사용하는 것은 http 의미 체계와 일치하며 브라우저는 점프 주소를 기록하는 동시에 서버에 대한 부담을 어느 정도 줄여줍니다. 하지만 301을 사용하면 짧은 주소를 클릭한 횟수를 계산할 수 없게 되므로 데이터 통계에 대한 요구 사항이 있는 경우 302 점프를 사용하는 것이 더 나을 수도 있습니다.
짧은 URL의 주요 이점은 특히 문자 메시지에 사용할 때 전송 및 기억이 편리하다는 것입니다. SMS는 콘텐츠의 단어 수에 제한이 있습니다. 예를 들어 짧은 URL은 Weibo에서 공유하는 데에도 사용됩니다. !
3. 시중에 나와있는 기존 사례
시중에는 무료 단축링크 서비스가 많이 있으며 기능은 기본적으로 동일하고 제한이 없습니다!
(1) Baidu의 짧은 링크(dwz.cn/), Baidu는 웹페이지 입구를 제공할 뿐만 아니라 간단하고 사용하기 쉬운 인터페이스와 개발 문서도 제공합니다!
(2) 시나의 단축링크(sina.lt/)는 현재 웹페이지 진입만 제공하고, 인터페이스 서비스는 발견되지 않았습니다!
(3) 타오바오 단축링크(tb.am/)는 현재 웹페이지 진입만 제공하고, 인터페이스 서비스는 발견되지 않았습니다!
시중에는 짧은 링크 서비스를 제공하는 소규모 회사가 많이 있는데 일부는 부분적으로 무료이고 일부 짧은 링크는 유효하므로 여기서는 하나씩 소개하지 않겠습니다!
4. 일반적으로 사용되는 알고리즘
인터넷에서 가장 많이 사용되는 알고리즘으로는 기본 알고리즘, 다이제스트(해시) 알고리즘, 난수 알고리즘이 있습니다.
기본 알고리즘입니다.
이 알고리즘은 인터넷에서 자동 증가 시퀀스 알고리즘이라고도 합니다. ID를 자동 증가로 설정하는 것이 특징입니다. 10진수 ID는 1부터 1까지입니다. 따라서 중복이 발생하지 않습니다. 이 용도는 낮은 베이스에서 높은 베이스로 변환할 때 문자 수가 줄어드는 것이 특징입니다. 컴퓨터의 일반적인 진법에는 2진수, 8진수, 10진수, 16진수 등이 있습니다. 진수가 클수록 표현할 수 있는 숫자는 늘어나고 차지하는 단어는 줄어듭니다. 예를 들면 다음과 같습니다. 10진수로 1000은 8진수로 1750이고 16진수로는 3E8입니다. 어떤 사람들은 컴퓨터에 62진수가 없다고 말합니다. . . 비록 사람은 없지만, 진수 변환 알고리즘은 정해져 있습니다. 가장 일반적인 것은 "나누기 방식"입니다! 16진수 문자 시퀀스는 0-9a-zA-Z라고 가정합니다. 순서가 깨질 수 있지만 0부터 61까지 시작하는 배열입니다. 지금은 알파벳이라고 부르겠습니다. ====> 1000/62 = 16, 나머지 8====> 16/62 = 0, 나머지 16나머지 숫자는 16과 8입니다. 알파벳 16과 8의 문자를 합쳐서 쓰면 g8인데 2자리로 아주 짧습니다! 최소 6자를 생성하려면 비교적 큰 숫자로 시작할 수 있습니다. 자세한 내용은 아래 그림을 참조하세요. 1자리 62 0 - 61 2자리 3844 62 - 3843 3자리 약 233,844 - 238327 4 정보 1400만 자리 238328 - 14776335 5자리 약 9억 1천만 14776336 - 916132831 6자리 약 568억 916132832 - 56800235583 코드 복사II. 첫 번째 방법:
간단한 긴 링크 salt md5를 추가하면 32비트 문자열을 생성하고 그 중에서 무작위로 6자를 선택하거나 단순히 마지막 6자리를 선택하지만 md5에는 알파벳 문자보다 적은 0-9A-Fa-f만 포함되어 있으므로 충돌 가능성은 다음과 같습니다. 보다 큰!
두 번째 방법:
1. 긴 URL md5에서 32비트 서명 문자열을 생성하고 4개 세그먼트로 나누어 각 세그먼트는 8바이트입니다.
2. 이 4개 루프 처리 섹션에서는 8바이트를 가져와서 16진수 문자열로 처리하고 0x3fffffff(30비트 1)로 작동합니다. 즉, 30비트 이상의 처리를 무시합니다
3. 6개의 세그먼트, 각 5자리 숫자는 알파벳의 색인으로 사용되어 특정 문자를 얻습니다. 6자리 문자열은 순차적으로 얻습니다.
4 총 md5 문자열은 4개의 6자리 문자열을 얻을 수 있으며, 그 중 하나를 이렇게 긴 URL로 사용할 수 있습니다. 단축 URL 주소
는 좀 더 복잡한 방식으로 생성되어 중복 확률은 낮지만 충돌은 계속 발생합니다!
3. 난수 알고리즘
이것이 더 간단합니다. 62자 배열을 무작위로 선택하고 그 중 6개를 짧은 링크 코드로 선택하면 됩니다. 간단하고 사용하기 쉽지만 중복 충돌이 발생합니다!
4. 알고리즘 비교
첫 번째 알고리즘은 자체 증가 ID 문제를 해결하는 한 충돌을 피할 수 있습니다. 각 단축 코드 생성은 데이터베이스의 자체 증가 기본 키를 사용할 수 있습니다. 단 하나의 데이터베이스 작업(삽입 작업)이 필요하며 기본 키 ID를 가져온 다음 단축 코드를 계산합니다.
두 번째와 세 번째 알고리즘은 실제로 유사하며 둘 다 프로그램 무작위성에 의존하고 충돌이 발생하기 쉬우므로 심각한 판단이 필요합니다. 데이터베이스에 삽입할 때마다 효율성이 떨어집니다.
5. 보안
짧은 링크는 전송 및 메모리를 용이하게 하지만 링크의 문자 수가 적기 때문에 공격자가 모든 문자로 구성된 링크를 쉽게 통과할 수 있습니다.
따라서 비밀번호 재설정 링크와 같은 개인 URL을 전송하기 위해 짧은 링크를 사용하는 것은 권장되지 않으며, 일부 권한과 민감한 정보가 포함된 링크의 경우 2차 인증을 수행해야 합니다!
추천 튜토리얼: Laravel 실용 개발 짧은 링크 생성기 비디오 튜토리얼
위 내용은 PHP에서 단축 URL을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

PHP에서는 session_status () 또는 session_id ()를 사용하여 세션이 시작되었는지 확인할 수 있습니다. 1) session_status () 함수를 사용하십시오. php_session_active가 반환되면 세션이 시작되었습니다. 2) session_id () 함수를 사용하십시오. 비어 있지 않은 문자열이 반환되면 세션이 시작되었습니다. 두 방법 모두 세션 상태를 효과적으로 확인할 수 있으며 사용할 방법을 선택하면 PHP 버전 및 개인 선호도에 따라 다릅니다.

SessionSareVitalInWebApplications, 특히 상수도가 포함되어 있습니다.

PHP에서 동시 세션 액세스 관리 다음 방법으로 수행 할 수 있습니다. 1. 데이터베이스를 사용하여 세션 데이터를 저장하십시오. 이러한 방법은 데이터 일관성을 보장하고 동시성 성능을 향상시키는 데 도움이됩니다.

phpsessionshaveseverallimitations : 1) StorageConstraintsCanleadToperFormanceIssues; 2) SecurityVulnerabilitiesSessionFixationAtCATACKSEXIST; 3) 확장 성분이 ANCHALLENGINGDUETOSERVERS-SCIFICSTORAGE; 4) SessionExpirationManagementCanbeproblematic; 5) Datapersis

로드 밸런싱은 세션 관리에 영향을 미치지 만 세션 복제, 세션 끈적임 및 중앙 집중식 세션 스토리지로 해결할 수 있습니다. 1. 세션 복제 복사 서버 간의 세션 데이터. 2. 세션 끈은 사용자 요청을 동일한 서버로 안내합니다. 3. 중앙 집중식 세션 스토리지는 Redis와 같은 독립 서버를 사용하여 세션 데이터를 저장하여 데이터 공유를 보장합니다.

SessionLockingIsateChniqueSureDureauser의 SessionLockingSsessionRemainSexclusivetoOneuseratatime.itiscrucialforpreptingdatacorruptionandsecurityBreachesInmulti-userApplications.sessionLockingSogingSompletEdusingserVerver-sidelockingMegynisms, unrasprantlockinj

PHP 세션의 대안에는 쿠키, 토큰 기반 인증, 데이터베이스 기반 세션 및 Redis/Memcached가 포함됩니다. 1. Cookies는 클라이언트에 데이터를 저장하여 세션을 관리합니다. 이는 단순하지만 보안이 적습니다. 2. Token 기반 인증은 토큰을 사용하여 사용자를 확인합니다. 이는 매우 안전하지만 추가 논리가 필요합니다. 3. Database 기반 세션은 데이터베이스에 데이터를 저장하여 확장 성이 좋지만 성능에 영향을 줄 수 있습니다. 4. Redis/Memcached는 분산 캐시를 사용하여 성능 및 확장 성을 향상하지만 추가 일치가 필요합니다.

SessionHijacking은 사용자의 SessionID를 얻음으로써 사용자를 가장하는 공격자를 말합니다. 예방 방법은 다음과 같습니다. 1) HTTPS를 사용한 의사 소통 암호화; 2) SessionID의 출처를 확인; 3) 보안 세션 생성 알고리즘 사용; 4) 정기적으로 SessionID를 업데이트합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음
