2011-09-06 3 views
0

데이터베이스에 신용 카드 번호를 저장하는 열이 있습니다. 약 2 주 동안 데이터베이스에 보관 한 후 모든 신용 카드 항목을 업데이트하고 마스크를 적용하는 쿼리를 실행하여 마지막 4 자리 숫자 만 표시 할 수 있기를 원합니다. 지금까지 나는 이것에 대해 갈 방법을 찾지 못했습니다. 신용 카드 번호의 길이가 다른 경우 어떻게해야합니까? 나는 그것이 3로 시작하지 않는 한 다음, 처음 12 자리 숫자 마스크 첫 번째 11SQL Server의 마스크 신용 카드 번호

+6

신용 카드 번호를 저장하는 경우 신용 카드 번호를 암호화하는 것이 좋습니다. – Russell

+0

어떻게 그 일을 할 수 있습니까? –

+2

http://stackoverflow.com/questions/2211685/sql-server-2008-pci-compliance-pertains-to-pci-as-well-as-symmetric-keys –

답변

7

지불 (신용) 카드 데이터 처리를 즉시 재구성해야합니다. 그렇지 않으면 회사에서 지불 카드를 처리 할 능력을 잃을 수 있습니다. 그러면 해고 당할 수 있습니다. 이러한 일반 텍스트 번호가 승인되지 않은 소스에 의해 손상되면 ...

먼저 지불 카드 이름, 번호 및 만료 날짜를 암호화해야합니다. 그런 다음 데이터베이스 백업을 사용하여 테이프에 넣고 오프 사이트로 가져 가야합니다. 그런 다음 일반 텍스트 신용 카드 번호 (Payment Card Industry에 따라 큰 번호 없음)가 포함되어 있기 때문에 기존 데이터베이스 백업을 모두 제거하십시오.

네 가지 가장 오른쪽 숫자를 테이블의 다른 암호화 된 열에 저장하는 것이 가장 안전한 방법입니다. 그런 다음이 필드를 선택하고 클라이언트 측에서 암호를 해독하면됩니다. 단, "over the wire"[LAN 또는 WAN 또는 인터넷 연결]로가는 동안 지불 카드 번호가 암호화되어 있는지 확인해야합니다. 번호를 "####로 끝나는 계정"또는 비슷한 것으로 표시하십시오.

5

쉬운 답을 마스크 수 있다면이 좋을 것 :

UPDATE dbo.MyLittleSecurityBreach 
    SET CreditCardNumber = RIGHT(CreditCardNumber, 4); 

를 저장 귀찮게하지 마십시오 * 데이터베이스의 마스크 문자는 무엇입니까? 형식이있는 경우 Amex는 15 자이고 다른 모든 자릿수는 16입니다. 프레젠테이션 시간에 11 또는 12 마스크 문자를 추가합니다.

이 모든 데이터를 암호화하는 조언을 듣지 않는다면 고용주에게 데이터 보안을 도울 사람이 필요하다고 조언하는 것이 좋습니다. 이것은 일어날 재앙입니다.

+0

환호 - 나는 모든 관심 감사드립니다! –

+1

+1 "MyLittleSecurityBreach" –