2012-07-29 2 views
1

몇 개의 암호화 된 문자열을 저장하려면 어떻게해야합니까?PHP를 사용하여 MySQL에 암호화 된 문자열을 저장하는 방법은 무엇입니까?

  1. : 단지 싶어이 개 질문을, 나는 색인 데이터를 원하지 않는 가정, 이제

    $key='fappings'; // Encryption Key 
    $str='Mama Luigi'; // String that I Encrypted 
    $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $str, MCRYPT_MODE_CBC, md5(md5($key))); 
    

    , 또는 그것에 어떤 검색을 수행 :

    의 내가이 문자열을 암호화 가정하자

    더 나은 데이터 형식은 무엇입니까? 나는 varbinary를 추측 할 것이지만 확실하지 않습니다 ...

  2. 어떻게하면 내 쿼리를 처리 할 수 ​​있습니까? 간단한 mysql_query() 함수를 사용한다고 가정합니다. 그것의 방법이 아니다

    mysql_query("insert into faps data='".base64_encode($encrypted)."'"); 
    

    하지만 뭔가 나에게 말한다 :

나는 어떤 사람들은 실제로 간단하게 예를 들어 일반 문자열이 갈 것 다만 방법을 삽입 base64로 인코딩을 한 다음 것이다 보았다 해. 공간면에서도 충분하지 않습니다.

더 나은 접근 방법은 무엇입니까?

답변

1

필요한 길이에 따라 varbinary (제안대로) 또는 blob을 사용하십시오. 안전을 위해 문자열의 길이를 4로 곱하십시오.

base64 인코딩 할 필요가 없습니다. 길이를 더하면됩니다. 필요한 것은 일반적인 탈출 함수 (기본 레벨에서 mysql_real_escape_string을 사용하거나 PDO를 사용하여 바인드하면 안전합니다).

MySql의 자체 암호화 기능을 사용할 수도 있습니다. http://dev.mysql.com/doc//refman/5.5/en/encryption-functions.html로 프로그래밍의 번거 로움을 덜어 줄 수 있습니까? PHP 서버에서 MySQL 서버로 스트레스를 옮깁니다. 따라서 덜 스트레스를 받는지, 열려있는 네트워크를 통해 압축되지 않은 SQL 명령어를 이동하는 것이 중요한지 등을 고려하십시오.

+0

글쎄, 맞춤 암호화를 위해 가지 않을 것입니다. OFC,하지만 난 그저 그럴 기분이 아니야, 그리고 이미 잘 작동하는 사람이있어. 나는 또한 PDO를 고려하지 않을 것이라고 언급했다. 그러나 내가 이해할 수있는 것처럼, 저장을 위해 mysql_real_escape_string ($ encrypted)을 사용하는 것이 안전합니까? 데이터는 바이너리이며 문자열이 아니므로 단지 모릅니다 ... 나는 조심스러워서 대답 할 수 있으면 감사 할 것입니다. – Anonymous

+0

예, mySQL_real_escape_sting을 사용하여 2 진 데이터를 저장할 수 있습니다. – Robbie

+0

고마워, 그건 실제로 트릭을 했어 :) 이진 코드 라해도 이스케이프 문자열로 이스케이프하는 것만 큼 간단하다고 생각하지 않았다. – Anonymous

관련 문제