2009-12-15 6 views
0

연결된 문자열이 있는데이를 쿼리 문자열로 전달하려고합니다. 보안을 위해이 .php 파일이 원격 서버에있는 것과 같은 폴더에있는 gpg 개인 키를 사용하여 연결된 문자열을 암호화하고 싶습니다.쿼리 문자열 텍스트 암호화

공개 키와 개인 키를 원격 서버에 보관하고 암호화 및 암호 해독에 사용하는 것이 안전한지 알고 싶습니다.

+0

내가 제대로을 가지고 있다면 나도 몰라 convert_uudecode이 PHP 함수를 시도 ... 웹 서버 사용자로 제한해야 ? 그렇다면 비공개 키가 같은 폴더에 있습니다.이 키는 웹에서 액세스 할 수 있습니다. 이는 전혀 안전하지 않습니다. –

답변

1

첫 번째 질문 : 왜? - 동일한 서버에서 데이터를 전송하는 경우 PHP 세션을 사용하거나 데이터베이스에 저장하십시오. 한 서버에서 다른 서버로 데이터를 전송하려는 경우 HTTP 요청과 같이 데이터 사이에 다른 통신 채널을 사용하십시오.

아직도하고 싶다면 GPG를 사용하지 마십시오. CPU로드가 상당히 많이 발생하고 메시지 크기가 크게 증가하므로 데이터가 비교적 짧습니다. blowfisch 또는 유사한 알고리즘을 사용하는 것이 더 좋습니다 (예 : PHP's crypt function 참조).

보안 정보 : 전체 서버만큼 안전하지만 개인 키가 웹 서버의 문서 루트 외부에 숨겨져 있는지 확인해야합니다. 웹에서 접근이 PHP 파일입니다 및 읽기 권한

+0

기존 암호화를 사용하여 완료 할 수 있습니까? 암호화되지 않은 문자열을 세션에 저장하는 것이 안전합니까? – RKh

+0

기존의 암호화 란 무엇입니까? 세션에 데이터를 저장하는 것은 웹 서버만큼 안전합니다. 호스팅 회사에서 호스팅하는 경우 세션에 액세스 할 수 있지만 키에 액세스 할 수도 있습니다. 서버가 데이터 센터에 있고 실제 잠금 장치로 보호되고 완벽하게 패치 된 소프트웨어를 실행하는 경우 상당히 안전합니다. – johannes

+0

일부 열 값에는 텍스트 영역 컨트롤에 입력 한 긴 텍스트가 포함되어 있습니다. 세션에 저장할 수있는 데이터의 양은 어느 정도입니까? – RKh

0

convert_uuencode

function encrypt_decrypt ($data, $encrypt) { 
    if ($encrypt == true) { 
     $output = base64_encode (convert_uuencode ($data)); 
    } else { 
     $output = convert_uudecode (base64_decode ($data)); 
    } 
    return $output; 
} 

$enc_txt = encrypt_decrypt ("QUERY TEXT", true); 
echo $enc_txt."\n"; 
// KjQ1NSU0RURANSQ1ODVgYGAKYAo= 
echo encrypt_decrypt ($enc_txt, false); 
// QUERY TEXT