2012-05-02 30 views
0

我希望有人能幫我解決一些問題。我一直在爲WordPress開發一款購物車插件。我在2008年底開始編寫它(它是那些「當我有時間」項目時纔開始工作的人,所以這個過程非常緩慢,顯然!),並且與它相差甚遠。即使有幾個測試人員把我帶上,並給我反饋。 (請注意,這個插件也意味着要下載費用 - 我無意使它成爲一個高級插件。)WordPress插件和單向加密

無論如何,在2010年,當所有的PCI/DSS的東西成爲標準,我擱置它,因爲插件是爲了在數據庫中保留某些信息,並且我不能100%確定什麼是合格的「敏感數據」,並且我不希望在那裏放置任何可能危及任何人的東西,並可能回到我身邊。在過去的幾周裏,一些同事和我一直在討論PCI/DSS合規性問題,並且最終完成這個插件引發了重新興趣。我將刪除信用卡號碼和任何此類數據的存儲空間,但我確實喜歡存儲自願可能要使用此插件的網站創建帳戶的人員的姓名和送貨地址的想法所以如果他們再次在那裏購物,那種信息會被保留下來。請記住,存儲的數據將是公共信息 - 您可以在電話簿中找到的那種東西,或在法院的記錄室中偷看。所以沒有什麼比如存儲SS#的,病歷或信用卡號碼。只是可能會讓別人看到過去購買的東西,並保留一些信息,使未來的結賬過程更容易一些。

我的一位同事建議我還是採取一些措施來增強安全性,因爲名稱和送貨地址可能會傳遞給網站所有者選擇使用的任何支付網關。他們建議我使用「單向加密」。現在,我不是一個巨大的安全怪胎,但我很確定這涉及(一方面反正)像MD5哈希與鹽,或類似的東西。所以這讓我感到困惑,因爲我沒有絲毫的想法去看看如何在代碼中使用這種類型的東西,並且/或者在將這類數據傳遞給PayPal或Google Checkout時它會起作用,或瑪爾,或你有什麼。

所以我想這不是一個「我需要代碼示例」的問題,而是更多的「請賜教,因爲我有點笨」這樣的問題。 (我相信,這讓人感覺好多了,因爲我正在編寫一個購物車插件LOL)

回答

0

單向加密用於將信息存儲在數據庫中,您不需要退出的數據庫再次處於未加密階段(因此是單向綽號)。從更廣泛的意義上講,它可以用來證明兩個不同的人(或系統)擁有相同的數據。例如,Git使用散列來檢查文件(甚至整個目錄結構)是否相同。

通常在ecomm中,哈希用於密碼(有時是信用卡),因爲作爲網站所有者,您不需要保留實際密碼,只需要一個函數即可確定密碼目前由用戶發送的信息與先前提供的信息相同。因此,爲了驗證用戶,您可以通過加密算法(MD5,SHA等)提供密碼以獲得「散列」。如果哈希匹配先前生成並存儲在數據庫中的哈希,則知道密碼是相同的。

WordPress使用鹽漬散列來存儲它的密碼。如果你在數據庫中打開你的wp_users表,你會看到哈希表。

這個系統的優點是,如果有人竊取你的數據庫,他們不會得到原始密碼,只是小偷不能用來登錄到你的用戶的Facebook,銀行等網站的哈希值(如果你的用戶使用了相同的密碼)。實際上,他們甚至不能使用哈希來登錄他們被盜的網站,因爲哈希產生了不同的哈希值。

salt提供了一種防止散列字典攻擊的措施。有常用密碼和散列值之間映射的數據庫可用,其中散列值已由常規使用的單向散列函數生成。如果在生成散列時,將一個鹽值加到密碼字符串的末尾(例如,我的密碼變爲abc123salt),那麼如果使用相同的值,您仍可以對先前生成並存儲的散列值進行比較鹽值每次。

如果您需要在未來再次以原始形式使用它,例如預填充結帳字段,則您不會單向散列某個地址或電話號碼(或沿着這些行的東西)的東西爲登錄的用戶。

如果將來不需要電話號碼,則不要將其存儲,否則最佳做法還涉及到僅存儲未再需要的數據。如果您從支付網關存儲響應交易號碼,則可以將其用於欺詐調查,並將所有其他數據的存儲保留至網關。

我會留給別人討論MD5與SHA的相對優點vs?哈希系統。請注意,PHP中有用於執行散列的函數。

+0

優秀 - 謝謝!我認爲你所說的「存儲響應交易號碼」可能實際上就是我正在尋找的東西 - 那個小小的評論可能是我需要的答案。感謝或解釋! – Shelly