2017-04-06 3 views
1

양식 제출 데이터를 암호화 할 수있는 방법에 대해 조사하고 데이터베이스에 안전하게 저장되는지 확인해 달라는 요청을 받았습니다. 양식 제출에는 직원에 대한 개인 정보가 포함되며 보안 유지가 필요합니다.AES_ENCRYPT를 사용하는 가장 좋은 방법은 무엇이며 얼마나 안전합니까?

연구 중에 AES_ENCRYPT()를 발견했으며이 함수를 적용하여 데이터를 데이터베이스에 성공적으로 저장합니다.

예 SQL 문은 내가 사용 :

"INSERT INTO employee (firstname) VALUES (AES_ENCRYPT('$name', '$encryption_key'))" 

그러나, 나는이 지역에서 매우 제한된 지식을 가지고 있고이 데이터가 해킹 방지하기 위해 충분한 충분한 보호가 확실하지 않다. 어떤 수준의 보안이 제공합니까? 내가 놓친 것이나 구현을 개선하는 데 사용할 수있는 다른 기술이 있습니까?

또한 암호화 키를 별도의 PHP 파일에 저장했지만 권장되는 저장 방법을 모르겠습니다. 이것에 대한 조언을 많이 주시면 감사하겠습니다.

죄송합니다.이 질문이 모호하거나 광범위하면 죄송합니다. 나는이 분야에서 완전한 초보자이다. 필요한 경우 더 많은 정보를 제공해 드리겠습니다.

+2

[SQL 주입] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)의 영향을받는 경우 암호화는 무의미합니다. [prepared statements] (http://php.net/manual/en/pdo.prepared-statements.php)를 사용하여 쿼리를 작성해야합니다. –

+0

질문에있는 코드의 양을 줄이기 위해 진술을 단순화했지만 다음을 사용했습니다 : $ stmt = $ conn-> prepare ("INSERT INTO employee (firstname) VALUES (AES_ENCRYPT (?, '$ encryption_key'))") ; $ stmt-> bind_param ("s", $ name); – Jade

+0

좋습니다. 좋을지도 모릅니다. –

답변

0

AES (Rijndael) crypto은 꽤 안전합니다. 실제로 데이터가 엄청나게 중요하지 않다면 안전하다고 생각할 수 있습니다. 방대한 리소스를 가진 배우가 당신의 암호화를 해독하기를 원하지 않는 한, 아무도 그렇게하지 않을 것입니다.

대칭입니다. 그것은 동일한 키를 사용하여 물건을 암호화하고 해독합니다. 따라서 키만큼 안전하다고 생각할 수 있습니다.

키가 안전하지 않습니다입니다. cybercreep이 PHP 코드를 실행하는 서버를 크랙하면 즉시 키에 액세스 할 수 있습니다. 그러면 암호화 된 데이터에 대한 액세스 권한이 부여됩니다. 그리고 그들은 "네가 민감하다고 생각하는 데이터가 여기있다."라고 말하는 밝은 네온 도로 표지가 있습니다.

약한 링크가 보안에 달려 있음을 잊지 마십시오. 일반적으로 dbms의 몇 열에 대칭 암호화를 사용하는 대신 서버 보안에 돈과 시간을 사용하는 것이 현명합니다. 다시 말해, 존중하면이 열 기반 암호화를 수행하는 데 시간을 낭비 할 것입니다.

절대적으로 데이터를 암호화해야하는 경우 비대칭 (공개/개인 키) 암호화 시스템 사용을 고려해야합니다. 공개 키를 사용하여 물건을 암호화하고, 일부 데이터의 암호를 해독해야 할 경우에 대비하여 공중제비 보안 시스템에 개인 키를 보관하십시오.

귀하의 예 (이름)는이 문제에 충분히 민감하지 않습니다.

+0

조언 해 주셔서 감사합니다. 비대칭 (공개/개인 키) 암호 시스템을 사용하는 방법을 배우는 데 도움이되는 정보를 어디에서 찾을 수 있는지 알고 있습니까? 아니면 이것을 자세히 설명하는 세부 정보를 제공 할 수 있습니까? – Jade

+0

@ Jade 비대칭 시스템은 다원 관계에서 가장 유용합니다. 즉, 여러 발신자가 데이터를 암호화하지만 하나의 수신자 만이를 해독하면됩니다. 시나리오에서는 클라이언트에게 공개 키를 보내고 데이터를 암호화하여 다시 보내 주면 서버 측 개인 키를 사용하여 읽을 수 있습니다. 하지만 그건 기능 낭비 일 뿐이므로 시간 낭비 일 것입니다. 소리보다 훨씬 어려운 키를 안전하게 지키면 논쟁의 여지가있는 유틸리티 인 경우이 대칭 구조가 좋습니다. –

+0

"AES (Rijndael) 암호는 매우 안전합니다": 100 %는 올바른 작동 모드 (CBC, CTR, GCM 등)에서 사용하면 동의합니다. 그러나이 코드에는 IV가 없으므로 안전하지 않은 ECB 모드에서이 코드를 사용하고 있다는 재미있는 느낌을 받게됩니다. 비대칭 암호의 경우 동일한 시스템의 데이터를 해독하지 않아도 ** 도움이됩니다. 그녀가 동일한 시스템에서 해독해야하는 경우 AES를 고수하는 것이 가장 좋습니다. – TheGreatContini