인터넷상의 대부분의 웹사이트의 경우 사용자 데이터는 백엔드 CGI에 일반 텍스트로 직접 제출되며, 서버 간의 대부분의 액세스는 일반 텍스트로 전송되므로 어떤 수단을 통해 은밀한 동기를 가진 일부 사람들이 이를 모니터링할 수 있습니다. . 은행, 대기업 등 보안 요구 사항이 높은 웹사이트에서는 HTTPS를 사용하여 통신 프로세스를 암호화합니다.
하지만 HTTPS를 사용하는 비용은 엄청나게 비쌉니다. 단순히 CA 인증서를 구입하는 것이 아니라 더 중요한 것은 심각한 성능 병목 현상을 해결하는 방법은 현재 F5의 BIGIP과 같은 특수 SSL 하드웨어 가속 장비를 사용하는 것뿐입니다. 따라서 일부 웹사이트에서는 단순히 SSL을 시뮬레이션하고 RSA 및 AES를 사용하여 전송된 데이터를 암호화하는 방법을 선택합니다. 원리는 아래 그림에 나와 있습니다.
이렇게 하면 데이터 전송 보안이 어느 정도 향상됩니다. 그러나 대부분의 웹사이트에서는 대부분의 데이터가 그렇게 엄격할 필요가 없으며 비밀번호와 같은 특정 중요한 소규모 데이터만 선택적으로 암호화할 수 있습니다. 작은 데이터 볼륨 암호화의 경우 전체 프로세스를 사용할 필요가 없으며 RSA만 사용하면 프로세스가 크게 단순화됩니다.
왜 데이터 양이 적나요? 대칭 암호화에 비해 비대칭 암호화 알고리즘은 데이터 양이 증가함에 따라 속도가 매우 느려지기 때문입니다. 따라서 실제 데이터 암호화에는 일반적으로 대칭 암호화 알고리즘이 사용됩니다. 따라서 PHP의 openssl 확장 공개 및 개인 키 암호화 기능은 작은 데이터(암호화의 경우 117바이트, 암호 해독의 경우 128바이트)만 지원합니다.
인터넷에는 AES 및 RSA용 오픈 소스 Javascript 알고리즘 라이브러리가 있으며, 이는 PHP의 관련 확장을 통해 직접 구현할 수 있습니다. (AES 알고리즘은 mcrypt의 관련 기능을 통해 구현할 수 있고, RSA는 openssl의 관련 기능을 통해 구현할 수 있습니다.) 인터넷에서 말하는 것처럼 순수 PHP 코드를 사용하여 알고리즘을 구현하는 대신. 공간 제한으로 인해 이 기사에서는 비밀번호 암호화를 예로 들어 Javascript와 PHP 간의 RSA 암호화 통신 구현만 소개합니다.
먼저 코드 로드:
프런트 엔드 암호화
First load three RSA의 js 라이브러리 파일은 여기에서 다운로드할 수 있습니다. http://www.ohdave.com/rsa/
$(document).ready(function(){ //十六进制公钥 var rsa_n = "C34E069415AC02FC4EA5F45779B7568506713E9210789D527BB89EE462662A1D0E94285E1A764F111D553ADD7C65673161E69298A8BE2212DF8016787E2F4859CD599516880D79EE5130FC5F8B7F69476938557CD3B8A79A612F1DDACCADAA5B6953ECC4716091E7C5E9F045B28004D33548EC89ED5C6B2C64D6C3697C5B9DD3"; $("#submit").click(function(){ setMaxDigits(131); //131 => n的十六进制位数/2+3 var key = new RSAKeyPair("10001", '', rsa_n); //10001 => e的十六进制 var password = $("#password").val(); password = encryptedString(key, password);//美中不足,不支持汉字~ $("#password").val(password); $("#login").submit(); }); });
PHP 암호화 기능
/** * 私钥解密 * * @param string 密文(base64编码) * @param string 密钥文件(.pem) * @param string 密文是否来源于JS的RSA加密 * @return string 明文 */ function privatekey_decodeing($crypttext, $fileName,$fromjs = FALSE) { $key_content = file_get_contents($fileName); $prikeyid = openssl_get_privatekey($key_content); $crypttext = base64_decode($crypttext); $padding = $fromjs ? OPENSSL_NO_PADDING : OPENSSL_PKCS1_PADDING; if (openssl_private_decrypt($crypttext, $sourcestr, $prikeyid, $padding)) { return $fromjs ? rtrim(strrev($sourcestr), "/0") : "".$sourcestr; } return FALSE; }
PHP 암호 해독 기능
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ## 🎜 🎜#테스트 코드/** * 私钥解密 * * @param string 密文(base64编码) * @param string 密钥文件(.pem) * @param string 密文是否来源于JS的RSA加密 * @return string 明文 */ function privatekey_decodeing($crypttext, $fileName,$fromjs = FALSE) { $key_content = file_get_contents($fileName); $prikeyid = openssl_get_privatekey($key_content); $crypttext = base64_decode($crypttext); $padding = $fromjs ? OPENSSL_NO_PADDING : OPENSSL_PKCS1_PADDING; if (openssl_private_decrypt($crypttext, $sourcestr, $prikeyid, $padding)) { return $fromjs ? rtrim(strrev($sourcestr), "/0") : "".$sourcestr; } return FALSE; }코드가 게시된 후 설명해야 할 몇 가지 사항이 있습니다. 그 중 16진수 공개키를 얻는 것이 핵심이다. 키는 x.509 인증서에서 가져오므로 먼저 키와 인증서 파일을 생성해야 합니다(이 문서에서 사용된 1024비트 키). 구체적인 생성 방법은 Google에 문의하세요. 여기서는 16진수 키를 얻는 방법에 중점을 둡니다. 파일에서 16진수 키를 읽어보세요. 이전에 여러 가지 방법을 시도했지만 인터넷에서 데이터가 ASN.1로 인코딩되었다고 합니다...囧~ 마침내 아래에서 발견했습니다. Linux 쉘 Openssl은 개인 키 파일(key 또는 pem)에서 추출할 수 있는 것 같습니다. 결과는 다음과 같습니다. 여기서 마침내 Javascript에 필요한 16진수 공개 키를 볼 수 있습니다: D
위 내용은 PHP 암호화 통신에 대한 Javascript의 간단한 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

PHP에서, 특성은 방법 재사용이 필요하지만 상속에 적합하지 않은 상황에 적합합니다. 1) 특성은 클래스에서 다중 상속의 복잡성을 피할 수 있도록 수많은 방법을 허용합니다. 2) 특성을 사용할 때는 대안과 키워드를 통해 해결할 수있는 방법 충돌에주의를 기울여야합니다. 3) 성능을 최적화하고 코드 유지 보수성을 향상시키기 위해 특성을 과도하게 사용해야하며 단일 책임을 유지해야합니다.

의존성 주입 컨테이너 (DIC)는 PHP 프로젝트에 사용하기위한 객체 종속성을 관리하고 제공하는 도구입니다. DIC의 주요 이점에는 다음이 포함됩니다. 1. 디커플링, 구성 요소 독립적 인 코드는 유지 관리 및 테스트가 쉽습니다. 2. 유연성, 의존성을 교체 또는 수정하기 쉽습니다. 3. 테스트 가능성, 단위 테스트를 위해 모의 객체를 주입하기에 편리합니다.

SplfixedArray는 PHP의 고정 크기 배열로, 고성능 및 메모리 사용이 필요한 시나리오에 적합합니다. 1) 동적 조정으로 인한 오버 헤드를 피하기 위해 생성 할 때 크기를 지정해야합니다. 2) C 언어 배열을 기반으로 메모리 및 빠른 액세스 속도를 직접 작동합니다. 3) 대규모 데이터 처리 및 메모리에 민감한 환경에 적합하지만 크기가 고정되어 있으므로주의해서 사용해야합니다.

PHP는 $ \ _ 파일 변수를 통해 파일 업로드를 처리합니다. 보안을 보장하는 방법에는 다음이 포함됩니다. 1. 오류 확인 확인, 2. 파일 유형 및 크기 확인, 3 파일 덮어 쓰기 방지, 4. 파일을 영구 저장소 위치로 이동하십시오.

JavaScript에서는 NullCoalescingOperator (??) 및 NullCoalescingAssignmentOperator (?? =)를 사용할 수 있습니다. 1. 2. ??= 변수를 오른쪽 피연산자의 값에 할당하지만 변수가 무효 또는 정의되지 않은 경우에만. 이 연산자는 코드 로직을 단순화하고 가독성과 성능을 향상시킵니다.

CSP는 XSS 공격을 방지하고 리소스로드를 제한하여 웹 사이트 보안을 향상시킬 수 있기 때문에 중요합니다. 1.CSP는 HTTP 응답 헤더의 일부이며 엄격한 정책을 통해 악의적 인 행동을 제한합니다. 2. 기본 사용법은 동일한 원점에서 자원을로드 할 수있는 것입니다. 3. 고급 사용량은 특정 도메인 이름을 스크립트와 스타일로드 할 수 있도록하는 것과 같은보다 세밀한 전략을 설정할 수 있습니다. 4. Content-Security Policy 보고서 전용 헤더를 사용하여 CSP 정책을 디버그하고 최적화하십시오.

HTTP 요청 방법에는 각각 리소스를 확보, 제출, 업데이트 및 삭제하는 데 사용되는 Get, Post, Put and Delete가 포함됩니다. 1. GET 방법은 리소스를 얻는 데 사용되며 읽기 작업에 적합합니다. 2. 게시물은 데이터를 제출하는 데 사용되며 종종 새로운 리소스를 만드는 데 사용됩니다. 3. PUT 방법은 리소스를 업데이트하는 데 사용되며 완전한 업데이트에 적합합니다. 4. 삭제 방법은 자원을 삭제하는 데 사용되며 삭제 작업에 적합합니다.

HTTPS는 HTTP를 기반으로 보안 계층을 추가하는 프로토콜로, 주로 암호화 된 데이터를 통해 사용자 개인 정보 및 데이터 보안을 보호합니다. 작업 원칙에는 TLS 핸드 셰이크, 인증서 확인 및 암호화 된 커뮤니케이션이 포함됩니다. HTTP를 구현할 때는 인증서 관리, 성능 영향 및 혼합 콘텐츠 문제에주의를 기울여야합니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

뜨거운 주제



