2011-09-06 73 views
0

我的數據庫中有一列存儲信用卡號碼。將它保存在數據庫中大約兩週後,我希望能夠運行查詢來更新所有信用卡條目並將其屏蔽 - 只顯示最後四位數字。到目前爲止,我一直未能找到解決辦法 - 如果信用卡號碼的長度不一樣呢?它會更好,如果我能掩蓋前12位數字,除非它以3開頭,則只有面膜第11在SQL 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,這是一個很大的禁止否。

最安全的做法是將四個最右邊的數字存儲在表中另一個加密列中。然後,您只需選擇此字段,然後在客戶端解密(請記住,您必須確保支付卡號碼在「通過線路」[又名LAN或WAN或Internet連接時]加密)。將該號碼顯示爲「以####結尾的帳戶」或類似的內容。

5

最簡單的答案是:

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

不要打擾存儲*屏蔽數據庫中的字符,有什麼好處?如果您有這種類型,則知道Amex是15個字符,其他都是16.在演示時添加11或12個掩碼字符。所有人都說,如果你沒有聽取建議來加密這些數據,我強烈建議你建議你的僱主,你需要有人來幫助數據安全。這是一場等待發生的災難。

+0

乾杯 - 我很感激所有的關注! –

+1

+1「MyLittleSecurityBreach」 –